diff options
| author | Paul Buetow <paul@buetow.org> | 2025-06-22 22:06:43 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-06-22 22:06:43 +0300 |
| commit | 3af674aebad9e3792fbf13b3cbda7b1691b1f4f3 (patch) | |
| tree | c70f6033d21628579d96044c89a060e9031dbf8b /extras/html/themes/dynamic_forest/style.css | |
| parent | 99078f90bf5222c618a60e536cb148850e4b89e2 (diff) | |
Add 50 new experimental HTML themes for Gemtexter
- Generated 50 unique themes with creative layouts and color schemes
- Each theme includes:
- Custom CSS with W3C validated styles
- Example HTML preview page
- Font files with proper licensing
- Theme configuration file
- License documentation
- Layout types include: centered, wide, magazine, card, brutalist,
terminal, book, hero, sidebar, and more creative designs
- All themes support both light and dark color schemes
- Fixed CSS validation issues for W3C compliance
- Created theme gallery page at extras/html/themes/index.html
- Added screenshot previews for all themes
- Utility scripts included:
- generate_50_themes.py - Main theme generator
- fix_css_validation.py - CSS validator/fixer
- create_theme_previews.py - Screenshot generator
- Theme gallery with filtering at index.html
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'extras/html/themes/dynamic_forest/style.css')
| -rw-r--r-- | extras/html/themes/dynamic_forest/style.css | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/extras/html/themes/dynamic_forest/style.css b/extras/html/themes/dynamic_forest/style.css new file mode 100644 index 0000000..3ec6186 --- /dev/null +++ b/extras/html/themes/dynamic_forest/style.css @@ -0,0 +1,175 @@ +/* Base styles */ +@font-face { + font-family: 'text'; + src: url("./text.ttf") format("truetype"); +} + +@font-face { + font-family: 'heading'; + src: url("./heading.ttf") format("truetype"); +} + +@font-face { + font-family: 'code'; + src: url("./code.ttf") format("truetype"); +} + +@font-face { + font-family: 'handnotes'; + src: url("./handnotes.ttf") format("truetype"); +} + +:root { + --color-primary: #4bcfe9; + --color-secondary: #5385e1; + --color-accent: #30e6ad; + --color-bg: #101314; + --color-text: #f0f0f0; + --font-size-base: 17px; + --font-size-h1: 4.24em; + --font-size-h2: 2.62em; + --font-size-h3: 1.62em; + --line-height: 1.6; +} + +* { + box-sizing: border-box; +} + +html { + font-size: var(--font-size-base); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font-family: text, sans-serif; + background-color: var(--color-bg); + color: var(--color-text); + line-height: var(--line-height); + margin: 0; + padding: 0; + overflow-wrap: break-word; +} + +h1, h2, h3 { + font-family: heading, serif; + line-height: 1.2; + margin-top: 1em; + margin-bottom: 0.5em; +} + +h1 { + font-size: var(--font-size-h1); + color: var(--color-primary); +} + +h2 { + font-size: var(--font-size-h2); + color: var(--color-primary); +} + +h3 { + font-size: var(--font-size-h3); + color: var(--color-secondary); +} + +a { + font-family: code, monospace; + color: var(--color-secondary); + text-decoration: none; + transition: all 0.3s ease; +} + +a:hover { + color: var(--color-accent); + text-decoration: underline; +} + +.textlink { + font-family: text, sans-serif; +} + +.quote { + font-family: handnotes, cursive; + border-left: 4px solid var(--color-accent); + padding: 1em 1.5em; + margin: 1.5em 0; + background-color: rgba(75, 207, 233, 0.07); + font-style: italic; +} + +pre { + font-family: code, monospace; + background-color: rgba(240, 240, 240, 0.04); + border: 1px solid rgba(240, 240, 240, 0.13); + padding: 1em; + overflow-x: auto; + border-radius: 4px; + font-size: 0.9em; +} + +code { + font-family: code, monospace; + background-color: rgba(240, 240, 240, 0.04); + padding: 0.2em 0.4em; + border-radius: 3px; + font-size: 0.9em; +} + +ul, ol { + padding-left: 2em; + margin: 1em 0; +} + +li { + margin: 0.5em 0; +} + +img { + max-width: 100%; + height: auto; +} + +hr { + border: none; + border-top: 1px solid rgba(240, 240, 240, 0.20); + margin: 2em 0; +} + + +/* Layout: masonry */ + +body { + padding: 2em; + columns: 320px; + column-gap: 2em; +} + +.header { + column-span: all; + text-align: center; + margin-bottom: 3em; + padding: 2em; + background: var(--color-primary); + color: var(--color-bg); +} + +.header h1 { + color: var(--color-bg); +} + +h1, h2 { + column-span: all; + text-align: center; + margin: 2em 0; +} + +p, ul, pre, .quote, h3 { + break-inside: avoid; + margin-bottom: 2em; + padding: 1.5em; + background-color: var(--color-bg); + border: 1px solid var(--color-text)11; + border-radius: 8px; +} |
