feat: port all template categories to JSON format

- Ported Minimalist templates to JSON (Swiss Grid, Brutalist, etc.)
- Ported Tech templates to JSON (SaaS, Terminal, Cyberpunk, etc.)
- Ported Creative templates to JSON (Art Gallery, Zine, Pop Art, etc.)
- Ported Industrial templates to JSON (Blueprint, Factory, Schematic, etc.)
- Ported Nature templates to JSON (Botanical, Ocean, Mountain, etc.)
- Ported Lifestyle templates to JSON (Cookbook, Travel, Coffee House, etc.)
- Ported Vintage templates to JSON (Art Deco, Medieval, Retro 80s, etc.)
- Updated README.md to reflect the new JSON-based style system (example configuration and contribution workflow)
- Completed migration of over 150 styles to the new architecture
This commit is contained in:
TypoGenie
2026-02-01 18:51:43 +02:00
parent a2631ac473
commit 60f39ed961
405 changed files with 69134 additions and 5936 deletions

View File

@@ -63,7 +63,7 @@ In a world where document formatting tools are increasingly locked behind paywal
<div align="center">
| 🌟 **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/<category>/`
4. **Build** — The app automatically loads JSON templates at runtime
5. **Share With All** — Submit a PR so everyone benefits!
### Configuration Options

94
audit-templates.ps1 Normal file
View File

@@ -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
}

61
cleanup_templates.cjs Normal file
View File

@@ -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(`(?<!"border)${side}":\\s*{([^}]*"color"[^}]*)}`, 'g');
if (orphanRegex.test(content)) {
content = content.replace(orphanRegex, `"border${capitalizedSide}": {${'$1'}}`);
changed = true;
}
});
// 2. Fix trailing braces: "borderSide": { ... } } -> "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.');

BIN
debug_output.txt Normal file

Binary file not shown.

48
debug_template_load.cjs Normal file
View File

@@ -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');

111
fix-academic-templates.ps1 Normal file
View File

@@ -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

28
fix_bom.cjs Normal file
View File

@@ -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.');

50
fix_templates.cjs Normal file
View File

@@ -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.');

View File

@@ -4,16 +4,17 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TypoGenie</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,600;1,400&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #09090b;
color: #e4e4e7;
}
/* Custom scrollbar - always visible */
* { scrollbar-width: 6px; scrollbar-color: #52525b transparent; }
*::-webkit-scrollbar { width: 6px; height: 6px; background: transparent; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: #52525b; border-radius: 3px; min-height: 40px; }
*::-webkit-scrollbar-thumb:hover { background: #71717a; }
*::-webkit-scrollbar-corner { background: transparent; }
</style>
</head>
<body>

794
package-lock.json generated
View File

@@ -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",

View File

@@ -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"
}

208
port-core-templates.ps1 Normal file
View File

@@ -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
}

5
postcss.config.js Normal file
View File

@@ -0,0 +1,5 @@
export default {
plugins: {
'@tailwindcss/postcss': {},
},
}

39
rebuild-templates.ps1 Normal file
View File

@@ -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

43
remove_columns.cjs Normal file
View File

@@ -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.');

60
restore_fonts.ps1 Normal file
View File

@@ -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
}
}

View File

@@ -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}`);

1036
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -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"

View File

@@ -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!

View File

@@ -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"
},

View File

@@ -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<String, String> {
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<String, String> {
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<Vec<TemplateFile>, 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<TemplateFile>,
base_dir: &PathBuf
) -> Result<(), Box<dyn std::error::Error>> {
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<bool, String> {
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<PathBuf> {
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<dyn std::error::Error>> {
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<dyn std::error::Error>> {
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<WindowState> {
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::<WindowState>(&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<PortableDataDir>) -> String {
state.0.to_string_lossy().to_string()
}

View File

@@ -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",

View File

@@ -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

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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"
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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"
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

Some files were not shown because too many files have changed in this diff Show More