diff --git a/.docker/default.conf b/.docker/default.conf
new file mode 100644
index 00000000..9d3a7b22
--- /dev/null
+++ b/.docker/default.conf
@@ -0,0 +1,21 @@
+server {
+ listen 80;
+ listen [::]:80;
+ server_name localhost;
+
+ location / {
+ root /usr/share/nginx/html;
+ index index.html;
+ add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src data: 'self'";
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Frame-Options "DENY";
+ add_header X-Content-Type-Options nosniff;
+ add_header Referrer-Policy "strict-origin";
+ }
+
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+}
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..f01a2390
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,3 @@
+# These are supported funding model platforms
+github: Azgaar
+patreon: Azgaar
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..d4407a32
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,33 @@
+---
+name: Bug report
+about: Report a problem
+title: ''
+labels: pending review
+assignees: Azgaar
+
+---
+
+
+**Describe the bug**
+
+
+**Steps to reproduce**
+
+1. Click on ...
+2. Type ...
+3. See the ...
+
+**Expected behavior**
+
+
+**.map file**
+
+
+**Screenshots**
+
+
+**System**
+
+ - Version: ...
+ - Browser: ...
+ - OS: ...
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..29ab55e2
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,19 @@
+---
+name: Feature request
+about: Suggest an idea
+title: ''
+labels: pending review
+assignees: Azgaar
+
+---
+
+<-- BEFORE CREATING PLEASE CHECK THE TO-DO LIST-->
+<-- https://trello.com/b/7x832DG4/fantasy-map-generator ->>
+**Problem**
+<-- Is your feature request related to a problem? Please describe. Ex.: I'm always frustrated when ... -->
+
+**Solution**
+<-- A clear and concise description of what you want to happen and ideas on how it can be implemented. Screenshots are welcomed -->
+
+**Alternatives**
+<-- A clear and concise description of any alternative solutions or features you've considered -->
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
new file mode 100644
index 00000000..698d23ae
--- /dev/null
+++ b/.github/copilot-instructions.md
@@ -0,0 +1,89 @@
+# Fantasy Map Generator
+
+Azgaar's Fantasy Map Generator is a client-side JavaScript web application for creating fantasy maps. It generates detailed fantasy worlds with countries, cities, rivers, biomes, and cultural elements.
+
+Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
+
+## Working Effectively
+
+- **CRITICAL**: This is a static web application - NO build process needed. No npm install, no compilation, no bundling.
+- Run the application using HTTP server (required - cannot run with file:// protocol):
+ - `python3 -m http.server 8000` - takes 2-3 seconds to start
+- Access at: `http://localhost:8000`
+
+## Validation
+
+- Always manually validate any changes by:
+ 1. Starting the HTTP server (NEVER CANCEL - wait for full startup)
+ 2. Navigate to the application in browser
+ 3. Click the "►" button to open the menu and generate a new map
+ 4. **CRITICAL VALIDATION**: Verify the map generates with countries, cities, roads, and geographic features
+ 5. Test UI interaction: click "Layers" button, verify layer controls work
+ 6. Test regeneration: click "New Map!" button, verify new map generates correctly
+- **Known Issues**: Google Analytics and font loading errors are normal (blocked external resources)
+
+## Repository Structure
+
+### Core Files
+
+- `index.html` - Main application entry point
+- `main.js` - Core application logic
+- `versioning.js` - Version management and update handling
+
+### Key Directories
+
+- `modules/` - core functionality modules:
+ - `modules/ui/` - UI components (editors, tools, style management)
+ - `modules/dynamic/` - runtime modules (export, installation)
+ - `modules/renderers/` - drawing and rendering logic
+- `utils/` - utility libraries (math, arrays, strings, etc.)
+- `styles/` - visual style presets (JSON files)
+- `libs/` - Third-party libraries (D3.js, TinyMCE, etc.)
+- `images/` - backgrounds, UI elements
+- `charges/` - heraldic symbols and coat of arms elements
+- `config/` - Heightmap templates and configurations
+- `heightmaps/` - Terrain generation data
+
+## Common Tasks
+
+### Making Code Changes
+
+1. Edit JavaScript files directly (no compilation needed)
+2. Refresh browser to see changes immediately
+3. **ALWAYS test map generation** after making changes
+4. Update version in `versioning.js` for all changes
+5. Update file hashes in `index.html` for changed files (format: `file.js?v=1.108.1`)
+
+### Debugging Map Generation
+
+- Open browser developer tools console
+- Look for timing logs, e.g. "TOTAL: ~0.76s"
+- Map generation logs show each step (heightmap, rivers, states, etc.)
+- Error messages will indicate specific generation failures
+
+### Testing Different Map Types
+
+- Use "New Map!" button for quick regeneration
+- Access "Layers" menu to change map visualization
+- Available presets: Political, Cultural, Religions, Biomes, Heightmap, Physical, Military
+
+## Troubleshooting
+
+### Application Won't Load
+
+- Ensure using HTTP server (not file://)
+- Check console for JavaScript errors
+- Verify all files are present in repository
+
+### Map Generation Fails
+
+- Check browser console for error messages
+- Look for specific module failures in generation logs
+- Try refreshing page and generating new map
+
+### Performance Issues
+
+- Map generation should complete in ~1 second for standard configurations
+- If slower, check browser console for errors
+
+Remember: This is a sophisticated client-side application that generates complete fantasy worlds with political systems, geography, cultures, and detailed cartographic elements. Always validate that your changes preserve the core map generation functionality.
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..acedeb18
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,23 @@
+# Description
+
+
+
+# Type of change
+
+
+
+- [ ] Bug fix
+- [ ] New feature
+- [ ] Refactoring / style
+- [ ] Documentation update / chore
+- [ ] Other (please describe)
+
+# Versioning
+
+
+
+- [ ] Version is updated
+- [ ] Changed files hash is updated
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..b0a273f0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.vscode
+.idea
+/node_modules
+/dist
+/coverage
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..6afdcc7d
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,11 @@
+{
+ "version": "0.1.0",
+ "configurations": [
+ {
+ "name": "Debug",
+ "type": "chrome",
+ "request": "launch",
+ "file": "${workspaceFolder}/index.html"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..23cfdd81
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,108 @@
+# Contributor Code of Conduct
+
+We as members, contributors, and leaders agree to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* Vocal support of agressive behaviour, agressive communities or countries
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+azgaar.fmg@yandex.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 2. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 3. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is based on [Contributor Covenant](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html),
+version 2.0.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..fbf5a425
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,7 @@
+FROM nginx:stable-alpine
+
+# Copy the contents of the repo to the container
+COPY . /usr/share/nginx/html
+
+# Move the customized nginx config file to the nginx folder
+RUN mv /usr/share/nginx/html/.docker/default.conf /etc/nginx/conf.d/default.conf
diff --git a/LICENSE b/LICENSE
index 19e4e777..4b0e677e 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright 2018-2019 Max Ganiev (Azgaar), azgaar.fmg@yandex.by
+Copyright 2017-2024 Max Haniyeu (Azgaar), azgaar.fmg@yandex.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -12,8 +12,9 @@ furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
-You can produce, without restrictions, any derivative works from the original
+You can produce, without restrictions, any derivative works from the original
software and even reap commercial benefits from the sale of the secondary product.
+The derivates include created maps, map images, screenshots, videos, and other materials.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
@@ -21,4 +22,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/README.md b/README.md
index d5fe4479..3ab245b2 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,29 @@
# Fantasy Map Generator
-Azgaar's _Fantasy Map Generator_. Online tool generating interactive and highly customizable svg maps based on voronoi diagram.
+Azgaar's _Fantasy Map Generator_ is a free web application that helps fantasy writers, game masters, and cartographers create and edit fantasy maps.
-Project is under development, check out the current version [here](https://azgaar.github.io/Fantasy-Map-Generator). You can also try an Electron desktop application - download [an archive](https://github.com/Azgaar/Fantasy-Map-Generator/releases) for your architecture, unzip and run the _Azgaar's Fantasy Map Generator.exe_.
+Link: [azgaar.github.io/Fantasy-Map-Generator](https://azgaar.github.io/Fantasy-Map-Generator).
-Refer to the [project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for a guidance. Some details are covered in my blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com), you may also keep an eye on my [Trello devboard](https://trello.com/b/7x832DG4/fantasy-map-generator).
+Refer to the [project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for guidance. The current progress is tracked in [Trello](https://trello.com/b/7x832DG4/fantasy-map-generator). Some details are covered in my old blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com).
-[](https://i.redd.it/8bf81ir2cy631.png)
+[](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/11a42446-4bd5-4526-9cb1-3ef97c868992)
-[](https://cdn.discordapp.com/attachments/515359185664344071/593888810782162964/The_Wichin_Island_sepia.png)
+[](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/e751a9e5-7986-4638-b8a9-362395ef7583)
-[](https://cdn.discordapp.com/attachments/515359096925454350/593891237984206848/The_Wichin_Island_-_diplomacy.png)
+[](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/b0d0efde-a0d1-4e80-8818-ea3dd83c2323)
-Join our [Reddit community](https://www.reddit.com/r/FantasyMapGenerator) and [Discord server](https://discordapp.com/invite/X7E84HU) to share the created maps, discuss the Generator, suggest ideas and get a most recent updates. You may also contact me directly via [email](mailto:azgaar.fmg@yandex.by). For bug reports please use the project [issues page](https://github.com/Azgaar/Fantasy-Map-Generator/issues) or Discord "Bugs" channel. If you are facing performance issues, please read [the tips](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Tips#performance-tips).
+Join our [Discord server](https://discordapp.com/invite/X7E84HU) and [Reddit community](https://www.reddit.com/r/FantasyMapGenerator) to share your creations, discuss the Generator, suggest ideas and get the most recent updates.
-You can support the project [on Patreon](https://www.patreon.com/azgaar).
+Contact me via [email](mailto:azgaar.fmg@yandex.com) if you have non-public suggestions. For bug reports please use [GitHub issues](https://github.com/Azgaar/Fantasy-Map-Generator/issues) or _#fmg-bugs_ channel on Discord. If you are facing performance issues, please read [the tips](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Tips#performance-tips).
+
+Pull requests are highly welcomed. The codebase is messy and requires re-design. I will appreciate if you start with minor changes. Check out the [data model](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Data-model) before contributing.
+
+You can support the project on [Patreon](https://www.patreon.com/azgaar).
_Inspiration:_
-* Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain)
+- Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain)
-* Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation)
+- Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation)
-* Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com)
+- Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com)
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index c7418817..00000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-slate
\ No newline at end of file
diff --git a/charges/agnusDei.svg b/charges/agnusDei.svg
new file mode 100644
index 00000000..60ea9d87
--- /dev/null
+++ b/charges/agnusDei.svg
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/anchor.svg b/charges/anchor.svg
new file mode 100644
index 00000000..59678314
--- /dev/null
+++ b/charges/anchor.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/angel.svg b/charges/angel.svg
new file mode 100644
index 00000000..e6f3ba3e
--- /dev/null
+++ b/charges/angel.svg
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/annulet.svg b/charges/annulet.svg
new file mode 100644
index 00000000..b3dad13d
--- /dev/null
+++ b/charges/annulet.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/anvil.svg b/charges/anvil.svg
new file mode 100644
index 00000000..2b6b0868
--- /dev/null
+++ b/charges/anvil.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/charges/apple.svg b/charges/apple.svg
new file mode 100644
index 00000000..6679428d
--- /dev/null
+++ b/charges/apple.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/arbalest.svg b/charges/arbalest.svg
new file mode 100644
index 00000000..38adac50
--- /dev/null
+++ b/charges/arbalest.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/arbalest2.svg b/charges/arbalest2.svg
new file mode 100644
index 00000000..be9b1a6a
--- /dev/null
+++ b/charges/arbalest2.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/archer.svg b/charges/archer.svg
new file mode 100644
index 00000000..00891c1b
--- /dev/null
+++ b/charges/archer.svg
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/armEmbowedHoldingSabre.svg b/charges/armEmbowedHoldingSabre.svg
new file mode 100644
index 00000000..2fbae9f6
--- /dev/null
+++ b/charges/armEmbowedHoldingSabre.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/armEmbowedVambraced.svg b/charges/armEmbowedVambraced.svg
new file mode 100644
index 00000000..ac1422b5
--- /dev/null
+++ b/charges/armEmbowedVambraced.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/armEmbowedVambracedHoldingSword.svg b/charges/armEmbowedVambracedHoldingSword.svg
new file mode 100644
index 00000000..d00d8bab
--- /dev/null
+++ b/charges/armEmbowedVambracedHoldingSword.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/armillarySphere.svg b/charges/armillarySphere.svg
new file mode 100644
index 00000000..45d09b8d
--- /dev/null
+++ b/charges/armillarySphere.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/arrow.svg b/charges/arrow.svg
new file mode 100644
index 00000000..2135169f
--- /dev/null
+++ b/charges/arrow.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/arrowsSheaf.svg b/charges/arrowsSheaf.svg
new file mode 100644
index 00000000..4b879e10
--- /dev/null
+++ b/charges/arrowsSheaf.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/attire.svg b/charges/attire.svg
new file mode 100644
index 00000000..99427a60
--- /dev/null
+++ b/charges/attire.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/axe.svg b/charges/axe.svg
new file mode 100644
index 00000000..e1608145
--- /dev/null
+++ b/charges/axe.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/badgerStatant.svg b/charges/badgerStatant.svg
new file mode 100644
index 00000000..29cd5f39
--- /dev/null
+++ b/charges/badgerStatant.svg
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/banner.svg b/charges/banner.svg
new file mode 100644
index 00000000..8ca47b97
--- /dev/null
+++ b/charges/banner.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/basilisk.svg b/charges/basilisk.svg
new file mode 100644
index 00000000..b2755dff
--- /dev/null
+++ b/charges/basilisk.svg
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bearPassant.svg b/charges/bearPassant.svg
new file mode 100644
index 00000000..847ea7bd
--- /dev/null
+++ b/charges/bearPassant.svg
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bearRampant.svg b/charges/bearRampant.svg
new file mode 100644
index 00000000..418d6fb3
--- /dev/null
+++ b/charges/bearRampant.svg
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bee.svg b/charges/bee.svg
new file mode 100644
index 00000000..7f3a0069
--- /dev/null
+++ b/charges/bee.svg
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bell.svg b/charges/bell.svg
new file mode 100644
index 00000000..307b6493
--- /dev/null
+++ b/charges/bell.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/billet.svg b/charges/billet.svg
new file mode 100644
index 00000000..9482f5a7
--- /dev/null
+++ b/charges/billet.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/boarHeadErased.svg b/charges/boarHeadErased.svg
new file mode 100644
index 00000000..08348586
--- /dev/null
+++ b/charges/boarHeadErased.svg
@@ -0,0 +1,44 @@
+
+
+
+
diff --git a/charges/boarRampant.svg b/charges/boarRampant.svg
new file mode 100644
index 00000000..436fb439
--- /dev/null
+++ b/charges/boarRampant.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/boat.svg b/charges/boat.svg
new file mode 100644
index 00000000..b50f6194
--- /dev/null
+++ b/charges/boat.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/boat2.svg b/charges/boat2.svg
new file mode 100644
index 00000000..f3e37a5b
--- /dev/null
+++ b/charges/boat2.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bone.svg b/charges/bone.svg
new file mode 100644
index 00000000..27a9e410
--- /dev/null
+++ b/charges/bone.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/bookClosed.svg b/charges/bookClosed.svg
new file mode 100644
index 00000000..0cd74341
--- /dev/null
+++ b/charges/bookClosed.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bookClosed2.svg b/charges/bookClosed2.svg
new file mode 100644
index 00000000..bf8d2519
--- /dev/null
+++ b/charges/bookClosed2.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bookOpen.svg b/charges/bookOpen.svg
new file mode 100644
index 00000000..62f1c6fc
--- /dev/null
+++ b/charges/bookOpen.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bow.svg b/charges/bow.svg
new file mode 100644
index 00000000..b1f2c8ec
--- /dev/null
+++ b/charges/bow.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/bowWithArrow.svg b/charges/bowWithArrow.svg
new file mode 100644
index 00000000..12d7f9ff
--- /dev/null
+++ b/charges/bowWithArrow.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bowWithThreeArrows.svg b/charges/bowWithThreeArrows.svg
new file mode 100644
index 00000000..0efc30f2
--- /dev/null
+++ b/charges/bowWithThreeArrows.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bridge.svg b/charges/bridge.svg
new file mode 100644
index 00000000..f5ce588e
--- /dev/null
+++ b/charges/bridge.svg
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bridge2.svg b/charges/bridge2.svg
new file mode 100644
index 00000000..6d3dfab5
--- /dev/null
+++ b/charges/bridge2.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bucket.svg b/charges/bucket.svg
new file mode 100644
index 00000000..56c7e83c
--- /dev/null
+++ b/charges/bucket.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/buckle.svg b/charges/buckle.svg
new file mode 100644
index 00000000..b83ba97d
--- /dev/null
+++ b/charges/buckle.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/bugleHorn.svg b/charges/bugleHorn.svg
new file mode 100644
index 00000000..a7985ca6
--- /dev/null
+++ b/charges/bugleHorn.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bugleHorn2.svg b/charges/bugleHorn2.svg
new file mode 100644
index 00000000..cf5bcaa7
--- /dev/null
+++ b/charges/bugleHorn2.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bullHeadCaboshed.svg b/charges/bullHeadCaboshed.svg
new file mode 100644
index 00000000..d3ddeccc
--- /dev/null
+++ b/charges/bullHeadCaboshed.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/bullPassant.svg b/charges/bullPassant.svg
new file mode 100644
index 00000000..0314b64e
--- /dev/null
+++ b/charges/bullPassant.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/butterfly.svg b/charges/butterfly.svg
new file mode 100644
index 00000000..2c301fcf
--- /dev/null
+++ b/charges/butterfly.svg
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/camel.svg b/charges/camel.svg
new file mode 100644
index 00000000..e2dd8bb9
--- /dev/null
+++ b/charges/camel.svg
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cancer.svg b/charges/cancer.svg
new file mode 100644
index 00000000..a8bf102c
--- /dev/null
+++ b/charges/cancer.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cannon.svg b/charges/cannon.svg
new file mode 100644
index 00000000..05e88b25
--- /dev/null
+++ b/charges/cannon.svg
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/caravel.svg b/charges/caravel.svg
new file mode 100644
index 00000000..9eb57671
--- /dev/null
+++ b/charges/caravel.svg
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/carreau.svg b/charges/carreau.svg
new file mode 100644
index 00000000..bfeeb049
--- /dev/null
+++ b/charges/carreau.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/castle.svg b/charges/castle.svg
new file mode 100644
index 00000000..43a2fa38
--- /dev/null
+++ b/charges/castle.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/castle2.svg b/charges/castle2.svg
new file mode 100644
index 00000000..5f12a8aa
--- /dev/null
+++ b/charges/castle2.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/catPassantGuardant.svg b/charges/catPassantGuardant.svg
new file mode 100644
index 00000000..b49dc820
--- /dev/null
+++ b/charges/catPassantGuardant.svg
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cavalier.svg b/charges/cavalier.svg
new file mode 100644
index 00000000..7bfad7ac
--- /dev/null
+++ b/charges/cavalier.svg
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/centaur.svg b/charges/centaur.svg
new file mode 100644
index 00000000..f4ddeb22
--- /dev/null
+++ b/charges/centaur.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/chain.svg b/charges/chain.svg
new file mode 100644
index 00000000..cfe4a3bb
--- /dev/null
+++ b/charges/chain.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/chalice.svg b/charges/chalice.svg
new file mode 100644
index 00000000..0f4f95f6
--- /dev/null
+++ b/charges/chalice.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cinquefoil.svg b/charges/cinquefoil.svg
new file mode 100644
index 00000000..49db293e
--- /dev/null
+++ b/charges/cinquefoil.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cock.svg b/charges/cock.svg
new file mode 100644
index 00000000..4b100034
--- /dev/null
+++ b/charges/cock.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/column.svg b/charges/column.svg
new file mode 100644
index 00000000..38d8b2a0
--- /dev/null
+++ b/charges/column.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/comet.svg b/charges/comet.svg
new file mode 100644
index 00000000..096ddb67
--- /dev/null
+++ b/charges/comet.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/compassRose.svg b/charges/compassRose.svg
new file mode 100644
index 00000000..dec495cc
--- /dev/null
+++ b/charges/compassRose.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/cossack.svg b/charges/cossack.svg
new file mode 100644
index 00000000..f5cf75ed
--- /dev/null
+++ b/charges/cossack.svg
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cowHorns.svg b/charges/cowHorns.svg
new file mode 100644
index 00000000..74378210
--- /dev/null
+++ b/charges/cowHorns.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/cowStatant.svg b/charges/cowStatant.svg
new file mode 100644
index 00000000..66b46823
--- /dev/null
+++ b/charges/cowStatant.svg
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/crescent.svg b/charges/crescent.svg
new file mode 100644
index 00000000..9181995b
--- /dev/null
+++ b/charges/crescent.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/crocodile.svg b/charges/crocodile.svg
new file mode 100644
index 00000000..442e456d
--- /dev/null
+++ b/charges/crocodile.svg
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/crosier.svg b/charges/crosier.svg
new file mode 100644
index 00000000..631ef998
--- /dev/null
+++ b/charges/crosier.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/crossAnkh.svg b/charges/crossAnkh.svg
new file mode 100644
index 00000000..6bbac70e
--- /dev/null
+++ b/charges/crossAnkh.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossArrowed.svg b/charges/crossArrowed.svg
new file mode 100644
index 00000000..ff4b6c02
--- /dev/null
+++ b/charges/crossArrowed.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/charges/crossAvellane.svg b/charges/crossAvellane.svg
new file mode 100644
index 00000000..303e7f72
--- /dev/null
+++ b/charges/crossAvellane.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/charges/crossBiparted.svg b/charges/crossBiparted.svg
new file mode 100644
index 00000000..0e6ac5f8
--- /dev/null
+++ b/charges/crossBiparted.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossBottony.svg b/charges/crossBottony.svg
new file mode 100644
index 00000000..2d246b29
--- /dev/null
+++ b/charges/crossBottony.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossBurgundy.svg b/charges/crossBurgundy.svg
new file mode 100644
index 00000000..cb681714
--- /dev/null
+++ b/charges/crossBurgundy.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossCalvary.svg b/charges/crossCalvary.svg
new file mode 100644
index 00000000..dd0447b5
--- /dev/null
+++ b/charges/crossCalvary.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/crossCarolingian.svg b/charges/crossCarolingian.svg
new file mode 100644
index 00000000..761464a7
--- /dev/null
+++ b/charges/crossCarolingian.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/crossCeltic.svg b/charges/crossCeltic.svg
new file mode 100644
index 00000000..6abe10fe
--- /dev/null
+++ b/charges/crossCeltic.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossCeltic2.svg b/charges/crossCeltic2.svg
new file mode 100644
index 00000000..84628911
--- /dev/null
+++ b/charges/crossCeltic2.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossCercelee.svg b/charges/crossCercelee.svg
new file mode 100644
index 00000000..2b8bff16
--- /dev/null
+++ b/charges/crossCercelee.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossClechy.svg b/charges/crossClechy.svg
new file mode 100644
index 00000000..c246534e
--- /dev/null
+++ b/charges/crossClechy.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossDouble.svg b/charges/crossDouble.svg
new file mode 100644
index 00000000..1a0e4bc8
--- /dev/null
+++ b/charges/crossDouble.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/crossErminee.svg b/charges/crossErminee.svg
new file mode 100644
index 00000000..1def3830
--- /dev/null
+++ b/charges/crossErminee.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossFitchy.svg b/charges/crossFitchy.svg
new file mode 100644
index 00000000..954b8e70
--- /dev/null
+++ b/charges/crossFitchy.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossFleury.svg b/charges/crossFleury.svg
new file mode 100644
index 00000000..d617a15d
--- /dev/null
+++ b/charges/crossFleury.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossFormee.svg b/charges/crossFormee.svg
new file mode 100644
index 00000000..efef99d4
--- /dev/null
+++ b/charges/crossFormee.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossFormee2.svg b/charges/crossFormee2.svg
new file mode 100644
index 00000000..2309e494
--- /dev/null
+++ b/charges/crossFormee2.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossFourchy.svg b/charges/crossFourchy.svg
new file mode 100644
index 00000000..9308a143
--- /dev/null
+++ b/charges/crossFourchy.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossGamma.svg b/charges/crossGamma.svg
new file mode 100644
index 00000000..d2da6490
--- /dev/null
+++ b/charges/crossGamma.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossHummetty.svg b/charges/crossHummetty.svg
new file mode 100644
index 00000000..e2676ab2
--- /dev/null
+++ b/charges/crossHummetty.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossJerusalem.svg b/charges/crossJerusalem.svg
new file mode 100644
index 00000000..54ba95dc
--- /dev/null
+++ b/charges/crossJerusalem.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossLatin.svg b/charges/crossLatin.svg
new file mode 100644
index 00000000..16f60138
--- /dev/null
+++ b/charges/crossLatin.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossMaltese.svg b/charges/crossMaltese.svg
new file mode 100644
index 00000000..5718dacf
--- /dev/null
+++ b/charges/crossMaltese.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossMoline.svg b/charges/crossMoline.svg
new file mode 100644
index 00000000..97f3b918
--- /dev/null
+++ b/charges/crossMoline.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossOccitan.svg b/charges/crossOccitan.svg
new file mode 100644
index 00000000..15fe7587
--- /dev/null
+++ b/charges/crossOccitan.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossOrthodox.svg b/charges/crossOrthodox.svg
new file mode 100644
index 00000000..9519f84d
--- /dev/null
+++ b/charges/crossOrthodox.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossPatonce.svg b/charges/crossPatonce.svg
new file mode 100644
index 00000000..aaaec339
--- /dev/null
+++ b/charges/crossPatonce.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossPatriarchal.svg b/charges/crossPatriarchal.svg
new file mode 100644
index 00000000..12338bc2
--- /dev/null
+++ b/charges/crossPatriarchal.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossPattee.svg b/charges/crossPattee.svg
new file mode 100644
index 00000000..1c3bf761
--- /dev/null
+++ b/charges/crossPattee.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossPatteeAlisee.svg b/charges/crossPatteeAlisee.svg
new file mode 100644
index 00000000..801e7113
--- /dev/null
+++ b/charges/crossPatteeAlisee.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossPommy.svg b/charges/crossPommy.svg
new file mode 100644
index 00000000..da002347
--- /dev/null
+++ b/charges/crossPommy.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossPotent.svg b/charges/crossPotent.svg
new file mode 100644
index 00000000..cc3bb92f
--- /dev/null
+++ b/charges/crossPotent.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossSaltire.svg b/charges/crossSaltire.svg
new file mode 100644
index 00000000..8798ba45
--- /dev/null
+++ b/charges/crossSaltire.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossSantiago.svg b/charges/crossSantiago.svg
new file mode 100644
index 00000000..7e510a90
--- /dev/null
+++ b/charges/crossSantiago.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/crossTau.svg b/charges/crossTau.svg
new file mode 100644
index 00000000..0789faf5
--- /dev/null
+++ b/charges/crossTau.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossTemplar.svg b/charges/crossTemplar.svg
new file mode 100644
index 00000000..9c33613c
--- /dev/null
+++ b/charges/crossTemplar.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossTriquetra.svg b/charges/crossTriquetra.svg
new file mode 100644
index 00000000..024225c1
--- /dev/null
+++ b/charges/crossTriquetra.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/crossVoided.svg b/charges/crossVoided.svg
new file mode 100644
index 00000000..0fa95bd7
--- /dev/null
+++ b/charges/crossVoided.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/crossedBones.svg b/charges/crossedBones.svg
new file mode 100644
index 00000000..3b06442f
--- /dev/null
+++ b/charges/crossedBones.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/crosslet.svg b/charges/crosslet.svg
new file mode 100644
index 00000000..645b68a3
--- /dev/null
+++ b/charges/crosslet.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/crown.svg b/charges/crown.svg
new file mode 100644
index 00000000..00dbbacf
--- /dev/null
+++ b/charges/crown.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/crown2.svg b/charges/crown2.svg
new file mode 100644
index 00000000..f06a106e
--- /dev/null
+++ b/charges/crown2.svg
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/deerHeadCaboshed.svg b/charges/deerHeadCaboshed.svg
new file mode 100644
index 00000000..aca87f99
--- /dev/null
+++ b/charges/deerHeadCaboshed.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/delf.svg b/charges/delf.svg
new file mode 100644
index 00000000..227bd04f
--- /dev/null
+++ b/charges/delf.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/dolphin.svg b/charges/dolphin.svg
new file mode 100644
index 00000000..be5b00bd
--- /dev/null
+++ b/charges/dolphin.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/donkeyHeadCaboshed.svg b/charges/donkeyHeadCaboshed.svg
new file mode 100644
index 00000000..da5aee0a
--- /dev/null
+++ b/charges/donkeyHeadCaboshed.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/dove.svg b/charges/dove.svg
new file mode 100644
index 00000000..7406a6ec
--- /dev/null
+++ b/charges/dove.svg
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/doveDisplayed.svg b/charges/doveDisplayed.svg
new file mode 100644
index 00000000..35bd14d6
--- /dev/null
+++ b/charges/doveDisplayed.svg
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/dragonPassant.svg b/charges/dragonPassant.svg
new file mode 100644
index 00000000..b8fbc58e
--- /dev/null
+++ b/charges/dragonPassant.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/dragonRampant.svg b/charges/dragonRampant.svg
new file mode 100644
index 00000000..6ff64c2a
--- /dev/null
+++ b/charges/dragonRampant.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/dragonfly.svg b/charges/dragonfly.svg
new file mode 100644
index 00000000..c8b501ca
--- /dev/null
+++ b/charges/dragonfly.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/drakkar.svg b/charges/drakkar.svg
new file mode 100644
index 00000000..f36c3c4d
--- /dev/null
+++ b/charges/drakkar.svg
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/drawingCompass.svg b/charges/drawingCompass.svg
new file mode 100644
index 00000000..65a252d3
--- /dev/null
+++ b/charges/drawingCompass.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/drum.svg b/charges/drum.svg
new file mode 100644
index 00000000..bd8fd638
--- /dev/null
+++ b/charges/drum.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/duck.svg b/charges/duck.svg
new file mode 100644
index 00000000..940c3e4d
--- /dev/null
+++ b/charges/duck.svg
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/eagle.svg b/charges/eagle.svg
new file mode 100644
index 00000000..c52fd495
--- /dev/null
+++ b/charges/eagle.svg
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/eagleTwoHeads.svg b/charges/eagleTwoHeads.svg
new file mode 100644
index 00000000..cc8ac124
--- /dev/null
+++ b/charges/eagleTwoHeads.svg
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/earOfWheat.svg b/charges/earOfWheat.svg
new file mode 100644
index 00000000..a1b3072c
--- /dev/null
+++ b/charges/earOfWheat.svg
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/elephant.svg b/charges/elephant.svg
new file mode 100644
index 00000000..fed4c13f
--- /dev/null
+++ b/charges/elephant.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/elephantHeadErased.svg b/charges/elephantHeadErased.svg
new file mode 100644
index 00000000..f521413b
--- /dev/null
+++ b/charges/elephantHeadErased.svg
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/charges/escallop.svg b/charges/escallop.svg
new file mode 100644
index 00000000..4fda9dda
--- /dev/null
+++ b/charges/escallop.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/estoile.svg b/charges/estoile.svg
new file mode 100644
index 00000000..6966ccbc
--- /dev/null
+++ b/charges/estoile.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/falchion.svg b/charges/falchion.svg
new file mode 100644
index 00000000..ccb71d3d
--- /dev/null
+++ b/charges/falchion.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/falcon.svg b/charges/falcon.svg
new file mode 100644
index 00000000..5e4cebd5
--- /dev/null
+++ b/charges/falcon.svg
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/fan.svg b/charges/fan.svg
new file mode 100644
index 00000000..d7504ac6
--- /dev/null
+++ b/charges/fan.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/fasces.svg b/charges/fasces.svg
new file mode 100644
index 00000000..71e27285
--- /dev/null
+++ b/charges/fasces.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/feather.svg b/charges/feather.svg
new file mode 100644
index 00000000..0be55bf5
--- /dev/null
+++ b/charges/feather.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/flamberge.svg b/charges/flamberge.svg
new file mode 100644
index 00000000..ab9d2277
--- /dev/null
+++ b/charges/flamberge.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/flangedMace.svg b/charges/flangedMace.svg
new file mode 100644
index 00000000..901d942f
--- /dev/null
+++ b/charges/flangedMace.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/fleurDeLis.svg b/charges/fleurDeLis.svg
new file mode 100644
index 00000000..2583e48f
--- /dev/null
+++ b/charges/fleurDeLis.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/fly.svg b/charges/fly.svg
new file mode 100644
index 00000000..9c880f72
--- /dev/null
+++ b/charges/fly.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/foot.svg b/charges/foot.svg
new file mode 100644
index 00000000..22963e5b
--- /dev/null
+++ b/charges/foot.svg
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/charges/fountain.svg b/charges/fountain.svg
new file mode 100644
index 00000000..1ed8ac67
--- /dev/null
+++ b/charges/fountain.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/frog.svg b/charges/frog.svg
new file mode 100644
index 00000000..392d3d05
--- /dev/null
+++ b/charges/frog.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/fusil.svg b/charges/fusil.svg
new file mode 100644
index 00000000..eac10ed4
--- /dev/null
+++ b/charges/fusil.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/garb.svg b/charges/garb.svg
new file mode 100644
index 00000000..fbefacd8
--- /dev/null
+++ b/charges/garb.svg
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/gauntlet.svg b/charges/gauntlet.svg
new file mode 100644
index 00000000..f00a03eb
--- /dev/null
+++ b/charges/gauntlet.svg
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/gear.svg b/charges/gear.svg
new file mode 100644
index 00000000..2d128dfb
--- /dev/null
+++ b/charges/gear.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/goat.svg b/charges/goat.svg
new file mode 100644
index 00000000..721c3f15
--- /dev/null
+++ b/charges/goat.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/goutte.svg b/charges/goutte.svg
new file mode 100644
index 00000000..40f23183
--- /dev/null
+++ b/charges/goutte.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/grapeBunch.svg b/charges/grapeBunch.svg
new file mode 100644
index 00000000..38d4693f
--- /dev/null
+++ b/charges/grapeBunch.svg
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/grapeBunch2.svg b/charges/grapeBunch2.svg
new file mode 100644
index 00000000..0af7b6a6
--- /dev/null
+++ b/charges/grapeBunch2.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/grenade.svg b/charges/grenade.svg
new file mode 100644
index 00000000..07436784
--- /dev/null
+++ b/charges/grenade.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/greyhoundCourant.svg b/charges/greyhoundCourant.svg
new file mode 100644
index 00000000..916d70cf
--- /dev/null
+++ b/charges/greyhoundCourant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/greyhoundRampant.svg b/charges/greyhoundRampant.svg
new file mode 100644
index 00000000..cf607df5
--- /dev/null
+++ b/charges/greyhoundRampant.svg
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/greyhoundSejant.svg b/charges/greyhoundSejant.svg
new file mode 100644
index 00000000..09efa81c
--- /dev/null
+++ b/charges/greyhoundSejant.svg
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/griffinPassant.svg b/charges/griffinPassant.svg
new file mode 100644
index 00000000..871b3591
--- /dev/null
+++ b/charges/griffinPassant.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/griffinRampant.svg b/charges/griffinRampant.svg
new file mode 100644
index 00000000..da2cfebe
--- /dev/null
+++ b/charges/griffinRampant.svg
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/hand.svg b/charges/hand.svg
new file mode 100644
index 00000000..91c279ae
--- /dev/null
+++ b/charges/hand.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/harp.svg b/charges/harp.svg
new file mode 100644
index 00000000..91e5ee08
--- /dev/null
+++ b/charges/harp.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/hatchet.svg b/charges/hatchet.svg
new file mode 100644
index 00000000..37052556
--- /dev/null
+++ b/charges/hatchet.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/head.svg b/charges/head.svg
new file mode 100644
index 00000000..08e36060
--- /dev/null
+++ b/charges/head.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/headWreathed.svg b/charges/headWreathed.svg
new file mode 100644
index 00000000..b6dafc64
--- /dev/null
+++ b/charges/headWreathed.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/heart.svg b/charges/heart.svg
new file mode 100644
index 00000000..56d0940c
--- /dev/null
+++ b/charges/heart.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/hedgehog.svg b/charges/hedgehog.svg
new file mode 100644
index 00000000..c7a84caa
--- /dev/null
+++ b/charges/hedgehog.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/helmet.svg b/charges/helmet.svg
new file mode 100644
index 00000000..9099c7c3
--- /dev/null
+++ b/charges/helmet.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/helmetCorinthian.svg b/charges/helmetCorinthian.svg
new file mode 100644
index 00000000..3ccd9cdd
--- /dev/null
+++ b/charges/helmetCorinthian.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/helmetGreat.svg b/charges/helmetGreat.svg
new file mode 100644
index 00000000..b7a7bf49
--- /dev/null
+++ b/charges/helmetGreat.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/helmetZischagge.svg b/charges/helmetZischagge.svg
new file mode 100644
index 00000000..8985d197
--- /dev/null
+++ b/charges/helmetZischagge.svg
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/heron.svg b/charges/heron.svg
new file mode 100644
index 00000000..4893b082
--- /dev/null
+++ b/charges/heron.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/hindStatant.svg b/charges/hindStatant.svg
new file mode 100644
index 00000000..3f9cc429
--- /dev/null
+++ b/charges/hindStatant.svg
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/hook.svg b/charges/hook.svg
new file mode 100644
index 00000000..d5679f64
--- /dev/null
+++ b/charges/hook.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/horseHeadCouped.svg b/charges/horseHeadCouped.svg
new file mode 100644
index 00000000..8c455c23
--- /dev/null
+++ b/charges/horseHeadCouped.svg
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/horsePassant.svg b/charges/horsePassant.svg
new file mode 100644
index 00000000..b2361b84
--- /dev/null
+++ b/charges/horsePassant.svg
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/horseRampant.svg b/charges/horseRampant.svg
new file mode 100644
index 00000000..be7fee6c
--- /dev/null
+++ b/charges/horseRampant.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/horseSalient.svg b/charges/horseSalient.svg
new file mode 100644
index 00000000..21b5db48
--- /dev/null
+++ b/charges/horseSalient.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/horseshoe.svg b/charges/horseshoe.svg
new file mode 100644
index 00000000..3bd51f7a
--- /dev/null
+++ b/charges/horseshoe.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/hourglass.svg b/charges/hourglass.svg
new file mode 100644
index 00000000..87e7930b
--- /dev/null
+++ b/charges/hourglass.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/key.svg b/charges/key.svg
new file mode 100644
index 00000000..6fb883ea
--- /dev/null
+++ b/charges/key.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ladder.svg b/charges/ladder.svg
new file mode 100644
index 00000000..fc72f130
--- /dev/null
+++ b/charges/ladder.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ladder2.svg b/charges/ladder2.svg
new file mode 100644
index 00000000..5596e045
--- /dev/null
+++ b/charges/ladder2.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ladybird.svg b/charges/ladybird.svg
new file mode 100644
index 00000000..3cc1587e
--- /dev/null
+++ b/charges/ladybird.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lamb.svg b/charges/lamb.svg
new file mode 100644
index 00000000..1d574b53
--- /dev/null
+++ b/charges/lamb.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lambPassantReguardant.svg b/charges/lambPassantReguardant.svg
new file mode 100644
index 00000000..90884eb7
--- /dev/null
+++ b/charges/lambPassantReguardant.svg
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lanceHead.svg b/charges/lanceHead.svg
new file mode 100644
index 00000000..255492db
--- /dev/null
+++ b/charges/lanceHead.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/lanceWithBanner.svg b/charges/lanceWithBanner.svg
new file mode 100644
index 00000000..556e5ade
--- /dev/null
+++ b/charges/lanceWithBanner.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/laurelWreath.svg b/charges/laurelWreath.svg
new file mode 100644
index 00000000..989e00c4
--- /dev/null
+++ b/charges/laurelWreath.svg
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/laurelWreath2.svg b/charges/laurelWreath2.svg
new file mode 100644
index 00000000..6dfb373e
--- /dev/null
+++ b/charges/laurelWreath2.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lighthouse.svg b/charges/lighthouse.svg
new file mode 100644
index 00000000..b66938f5
--- /dev/null
+++ b/charges/lighthouse.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lionHeadCaboshed.svg b/charges/lionHeadCaboshed.svg
new file mode 100644
index 00000000..63022fc0
--- /dev/null
+++ b/charges/lionHeadCaboshed.svg
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lionHeadErased.svg b/charges/lionHeadErased.svg
new file mode 100644
index 00000000..7ed39c67
--- /dev/null
+++ b/charges/lionHeadErased.svg
@@ -0,0 +1,28 @@
+
+
+
+
diff --git a/charges/lionPassant.svg b/charges/lionPassant.svg
new file mode 100644
index 00000000..7dd6b396
--- /dev/null
+++ b/charges/lionPassant.svg
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lionPassantGuardant.svg b/charges/lionPassantGuardant.svg
new file mode 100644
index 00000000..584e8835
--- /dev/null
+++ b/charges/lionPassantGuardant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/lionRampant.svg b/charges/lionRampant.svg
new file mode 100644
index 00000000..8aab2b09
--- /dev/null
+++ b/charges/lionRampant.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/lionSejant.svg b/charges/lionSejant.svg
new file mode 100644
index 00000000..23ca98db
--- /dev/null
+++ b/charges/lionSejant.svg
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lizard.svg b/charges/lizard.svg
new file mode 100644
index 00000000..dc8dbf9d
--- /dev/null
+++ b/charges/lizard.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lochaberAxe.svg b/charges/lochaberAxe.svg
new file mode 100644
index 00000000..cf09c61e
--- /dev/null
+++ b/charges/lochaberAxe.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/log.svg b/charges/log.svg
new file mode 100644
index 00000000..387fad44
--- /dev/null
+++ b/charges/log.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/lozenge.svg b/charges/lozenge.svg
new file mode 100644
index 00000000..4cfb22c9
--- /dev/null
+++ b/charges/lozenge.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/lozengeFaceted.svg b/charges/lozengeFaceted.svg
new file mode 100644
index 00000000..63a575e3
--- /dev/null
+++ b/charges/lozengeFaceted.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lozengePloye.svg b/charges/lozengePloye.svg
new file mode 100644
index 00000000..0187c681
--- /dev/null
+++ b/charges/lozengePloye.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/lute.svg b/charges/lute.svg
new file mode 100644
index 00000000..c88cc397
--- /dev/null
+++ b/charges/lute.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/lymphad.svg b/charges/lymphad.svg
new file mode 100644
index 00000000..457f10d7
--- /dev/null
+++ b/charges/lymphad.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/lyre.svg b/charges/lyre.svg
new file mode 100644
index 00000000..d89b8550
--- /dev/null
+++ b/charges/lyre.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mace.svg b/charges/mace.svg
new file mode 100644
index 00000000..a3f0e074
--- /dev/null
+++ b/charges/mace.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/maces.svg b/charges/maces.svg
new file mode 100644
index 00000000..93988b80
--- /dev/null
+++ b/charges/maces.svg
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mallet.svg b/charges/mallet.svg
new file mode 100644
index 00000000..ecb418f9
--- /dev/null
+++ b/charges/mallet.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mantle.svg b/charges/mantle.svg
new file mode 100644
index 00000000..5493c30b
--- /dev/null
+++ b/charges/mantle.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mapleLeaf.svg b/charges/mapleLeaf.svg
new file mode 100644
index 00000000..93e63767
--- /dev/null
+++ b/charges/mapleLeaf.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/martenCourant.svg b/charges/martenCourant.svg
new file mode 100644
index 00000000..1760d038
--- /dev/null
+++ b/charges/martenCourant.svg
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mascle.svg b/charges/mascle.svg
new file mode 100644
index 00000000..b867e47a
--- /dev/null
+++ b/charges/mascle.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mastiffStatant.svg b/charges/mastiffStatant.svg
new file mode 100644
index 00000000..14feb266
--- /dev/null
+++ b/charges/mastiffStatant.svg
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/millstone.svg b/charges/millstone.svg
new file mode 100644
index 00000000..f8d523ca
--- /dev/null
+++ b/charges/millstone.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mitre.svg b/charges/mitre.svg
new file mode 100644
index 00000000..1a20e002
--- /dev/null
+++ b/charges/mitre.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/monk.svg b/charges/monk.svg
new file mode 100644
index 00000000..8ede0359
--- /dev/null
+++ b/charges/monk.svg
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/moonInCrescent.svg b/charges/moonInCrescent.svg
new file mode 100644
index 00000000..27fdb512
--- /dev/null
+++ b/charges/moonInCrescent.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/mullet.svg b/charges/mullet.svg
new file mode 100644
index 00000000..2658e971
--- /dev/null
+++ b/charges/mullet.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mullet10.svg b/charges/mullet10.svg
new file mode 100644
index 00000000..60ed608a
--- /dev/null
+++ b/charges/mullet10.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mullet4.svg b/charges/mullet4.svg
new file mode 100644
index 00000000..37242f99
--- /dev/null
+++ b/charges/mullet4.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mullet6.svg b/charges/mullet6.svg
new file mode 100644
index 00000000..1a1972aa
--- /dev/null
+++ b/charges/mullet6.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mullet6Faceted.svg b/charges/mullet6Faceted.svg
new file mode 100644
index 00000000..1ca0c335
--- /dev/null
+++ b/charges/mullet6Faceted.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/mullet6Pierced.svg b/charges/mullet6Pierced.svg
new file mode 100644
index 00000000..96d6f279
--- /dev/null
+++ b/charges/mullet6Pierced.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mullet7.svg b/charges/mullet7.svg
new file mode 100644
index 00000000..53321978
--- /dev/null
+++ b/charges/mullet7.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mullet8.svg b/charges/mullet8.svg
new file mode 100644
index 00000000..0239a883
--- /dev/null
+++ b/charges/mullet8.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/mulletFaceted.svg b/charges/mulletFaceted.svg
new file mode 100644
index 00000000..a43fe26e
--- /dev/null
+++ b/charges/mulletFaceted.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/mulletPierced.svg b/charges/mulletPierced.svg
new file mode 100644
index 00000000..b469bf0c
--- /dev/null
+++ b/charges/mulletPierced.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/oak.svg b/charges/oak.svg
new file mode 100644
index 00000000..b01da9b4
--- /dev/null
+++ b/charges/oak.svg
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/orb.svg b/charges/orb.svg
new file mode 100644
index 00000000..2d7354f5
--- /dev/null
+++ b/charges/orb.svg
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ouroboros.svg b/charges/ouroboros.svg
new file mode 100644
index 00000000..f0f39146
--- /dev/null
+++ b/charges/ouroboros.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/owl.svg b/charges/owl.svg
new file mode 100644
index 00000000..015a7f81
--- /dev/null
+++ b/charges/owl.svg
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/owlDisplayed.svg b/charges/owlDisplayed.svg
new file mode 100644
index 00000000..353fe5e7
--- /dev/null
+++ b/charges/owlDisplayed.svg
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/palace.svg b/charges/palace.svg
new file mode 100644
index 00000000..9e03dd4b
--- /dev/null
+++ b/charges/palace.svg
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/palmTree.svg b/charges/palmTree.svg
new file mode 100644
index 00000000..590d14a3
--- /dev/null
+++ b/charges/palmTree.svg
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/parrot.svg b/charges/parrot.svg
new file mode 100644
index 00000000..92d7dd10
--- /dev/null
+++ b/charges/parrot.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/peacock.svg b/charges/peacock.svg
new file mode 100644
index 00000000..064831f4
--- /dev/null
+++ b/charges/peacock.svg
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/peacockInPride.svg b/charges/peacockInPride.svg
new file mode 100644
index 00000000..b8b4f8c7
--- /dev/null
+++ b/charges/peacockInPride.svg
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pear.svg b/charges/pear.svg
new file mode 100644
index 00000000..d421e208
--- /dev/null
+++ b/charges/pear.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pegasus.svg b/charges/pegasus.svg
new file mode 100644
index 00000000..5335022d
--- /dev/null
+++ b/charges/pegasus.svg
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pike.svg b/charges/pike.svg
new file mode 100644
index 00000000..812002b7
--- /dev/null
+++ b/charges/pike.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pillar.svg b/charges/pillar.svg
new file mode 100644
index 00000000..d9aa943f
--- /dev/null
+++ b/charges/pillar.svg
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pincers.svg b/charges/pincers.svg
new file mode 100644
index 00000000..2e91f728
--- /dev/null
+++ b/charges/pincers.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/pineCone.svg b/charges/pineCone.svg
new file mode 100644
index 00000000..c326f2a2
--- /dev/null
+++ b/charges/pineCone.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pineTree.svg b/charges/pineTree.svg
new file mode 100644
index 00000000..2abebe11
--- /dev/null
+++ b/charges/pineTree.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pique.svg b/charges/pique.svg
new file mode 100644
index 00000000..06c5836e
--- /dev/null
+++ b/charges/pique.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/plaice.svg b/charges/plaice.svg
new file mode 100644
index 00000000..8325d1ca
--- /dev/null
+++ b/charges/plaice.svg
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/plough.svg b/charges/plough.svg
new file mode 100644
index 00000000..7c1f42fc
--- /dev/null
+++ b/charges/plough.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ploughshare.svg b/charges/ploughshare.svg
new file mode 100644
index 00000000..45928f03
--- /dev/null
+++ b/charges/ploughshare.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/porcupine.svg b/charges/porcupine.svg
new file mode 100644
index 00000000..bdc53081
--- /dev/null
+++ b/charges/porcupine.svg
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/portcullis.svg b/charges/portcullis.svg
new file mode 100644
index 00000000..de154326
--- /dev/null
+++ b/charges/portcullis.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/pot.svg b/charges/pot.svg
new file mode 100644
index 00000000..64cc0ff6
--- /dev/null
+++ b/charges/pot.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/quatrefoil.svg b/charges/quatrefoil.svg
new file mode 100644
index 00000000..ff33f762
--- /dev/null
+++ b/charges/quatrefoil.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/rabbitSejant.svg b/charges/rabbitSejant.svg
new file mode 100644
index 00000000..c61e0a9b
--- /dev/null
+++ b/charges/rabbitSejant.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/raft.svg b/charges/raft.svg
new file mode 100644
index 00000000..d5b728b4
--- /dev/null
+++ b/charges/raft.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/rake.svg b/charges/rake.svg
new file mode 100644
index 00000000..6feed725
--- /dev/null
+++ b/charges/rake.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ramHeadErased.svg b/charges/ramHeadErased.svg
new file mode 100644
index 00000000..c971f7b4
--- /dev/null
+++ b/charges/ramHeadErased.svg
@@ -0,0 +1,75 @@
+
+
+
+
diff --git a/charges/ramPassant.svg b/charges/ramPassant.svg
new file mode 100644
index 00000000..421e416c
--- /dev/null
+++ b/charges/ramPassant.svg
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ramsHorn.svg b/charges/ramsHorn.svg
new file mode 100644
index 00000000..26585cc9
--- /dev/null
+++ b/charges/ramsHorn.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/rapier.svg b/charges/rapier.svg
new file mode 100644
index 00000000..fed83920
--- /dev/null
+++ b/charges/rapier.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ratRampant.svg b/charges/ratRampant.svg
new file mode 100644
index 00000000..13c6746a
--- /dev/null
+++ b/charges/ratRampant.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/raven.svg b/charges/raven.svg
new file mode 100644
index 00000000..6e3c4eca
--- /dev/null
+++ b/charges/raven.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/rhinoceros.svg b/charges/rhinoceros.svg
new file mode 100644
index 00000000..1d43c4f4
--- /dev/null
+++ b/charges/rhinoceros.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon1.svg b/charges/ribbon1.svg
new file mode 100644
index 00000000..03bf3515
--- /dev/null
+++ b/charges/ribbon1.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon2.svg b/charges/ribbon2.svg
new file mode 100644
index 00000000..0f15bb04
--- /dev/null
+++ b/charges/ribbon2.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon3.svg b/charges/ribbon3.svg
new file mode 100644
index 00000000..dd168991
--- /dev/null
+++ b/charges/ribbon3.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon4.svg b/charges/ribbon4.svg
new file mode 100644
index 00000000..bab35959
--- /dev/null
+++ b/charges/ribbon4.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon5.svg b/charges/ribbon5.svg
new file mode 100644
index 00000000..3c718bce
--- /dev/null
+++ b/charges/ribbon5.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon6.svg b/charges/ribbon6.svg
new file mode 100644
index 00000000..a32eede7
--- /dev/null
+++ b/charges/ribbon6.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon7.svg b/charges/ribbon7.svg
new file mode 100644
index 00000000..2d9a1e21
--- /dev/null
+++ b/charges/ribbon7.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/ribbon8.svg b/charges/ribbon8.svg
new file mode 100644
index 00000000..f7c672a7
--- /dev/null
+++ b/charges/ribbon8.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/rose.svg b/charges/rose.svg
new file mode 100644
index 00000000..7ce11665
--- /dev/null
+++ b/charges/rose.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/roundel.svg b/charges/roundel.svg
new file mode 100644
index 00000000..344991ed
--- /dev/null
+++ b/charges/roundel.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/roundel2.svg b/charges/roundel2.svg
new file mode 100644
index 00000000..fffa7ad4
--- /dev/null
+++ b/charges/roundel2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/charges/rustre.svg b/charges/rustre.svg
new file mode 100644
index 00000000..60c253a1
--- /dev/null
+++ b/charges/rustre.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/sabre.svg b/charges/sabre.svg
new file mode 100644
index 00000000..0f1f002d
--- /dev/null
+++ b/charges/sabre.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sabre2.svg b/charges/sabre2.svg
new file mode 100644
index 00000000..2466a761
--- /dev/null
+++ b/charges/sabre2.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sabresCrossed.svg b/charges/sabresCrossed.svg
new file mode 100644
index 00000000..e9cec5f4
--- /dev/null
+++ b/charges/sabresCrossed.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sagittarius.svg b/charges/sagittarius.svg
new file mode 100644
index 00000000..ac5eaeeb
--- /dev/null
+++ b/charges/sagittarius.svg
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/salmon.svg b/charges/salmon.svg
new file mode 100644
index 00000000..bda9bf49
--- /dev/null
+++ b/charges/salmon.svg
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/saw.svg b/charges/saw.svg
new file mode 100644
index 00000000..c356263f
--- /dev/null
+++ b/charges/saw.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scale.svg b/charges/scale.svg
new file mode 100644
index 00000000..b2da96ea
--- /dev/null
+++ b/charges/scale.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scaleImbalanced.svg b/charges/scaleImbalanced.svg
new file mode 100644
index 00000000..ea151649
--- /dev/null
+++ b/charges/scaleImbalanced.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scalesHanging.svg b/charges/scalesHanging.svg
new file mode 100644
index 00000000..1065211b
--- /dev/null
+++ b/charges/scalesHanging.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sceptre.svg b/charges/sceptre.svg
new file mode 100644
index 00000000..57869cbf
--- /dev/null
+++ b/charges/sceptre.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scissors.svg b/charges/scissors.svg
new file mode 100644
index 00000000..a7437f1e
--- /dev/null
+++ b/charges/scissors.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/charges/scissors2.svg b/charges/scissors2.svg
new file mode 100644
index 00000000..109d8238
--- /dev/null
+++ b/charges/scissors2.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scorpion.svg b/charges/scorpion.svg
new file mode 100644
index 00000000..c132511d
--- /dev/null
+++ b/charges/scorpion.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scrollClosed.svg b/charges/scrollClosed.svg
new file mode 100644
index 00000000..1f7d8034
--- /dev/null
+++ b/charges/scrollClosed.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scythe.svg b/charges/scythe.svg
new file mode 100644
index 00000000..b8d0a04d
--- /dev/null
+++ b/charges/scythe.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/scythe2.svg b/charges/scythe2.svg
new file mode 100644
index 00000000..7fa9de5d
--- /dev/null
+++ b/charges/scythe2.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/serpent.svg b/charges/serpent.svg
new file mode 100644
index 00000000..e12c9570
--- /dev/null
+++ b/charges/serpent.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sextifoil.svg b/charges/sextifoil.svg
new file mode 100644
index 00000000..ad6e3303
--- /dev/null
+++ b/charges/sextifoil.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/shears.svg b/charges/shears.svg
new file mode 100644
index 00000000..3b3daeb4
--- /dev/null
+++ b/charges/shears.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/shield.svg b/charges/shield.svg
new file mode 100644
index 00000000..89ad41de
--- /dev/null
+++ b/charges/shield.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/shipWheel.svg b/charges/shipWheel.svg
new file mode 100644
index 00000000..fa23136c
--- /dev/null
+++ b/charges/shipWheel.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sickle.svg b/charges/sickle.svg
new file mode 100644
index 00000000..753eeeaa
--- /dev/null
+++ b/charges/sickle.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/skeleton.svg b/charges/skeleton.svg
new file mode 100644
index 00000000..cde28dae
--- /dev/null
+++ b/charges/skeleton.svg
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/skull.svg b/charges/skull.svg
new file mode 100644
index 00000000..c7dc7044
--- /dev/null
+++ b/charges/skull.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/skull2.svg b/charges/skull2.svg
new file mode 100644
index 00000000..a580afd7
--- /dev/null
+++ b/charges/skull2.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/snail.svg b/charges/snail.svg
new file mode 100644
index 00000000..387dc48a
--- /dev/null
+++ b/charges/snail.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/snake.svg b/charges/snake.svg
new file mode 100644
index 00000000..532f2c0c
--- /dev/null
+++ b/charges/snake.svg
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/snowflake.svg b/charges/snowflake.svg
new file mode 100644
index 00000000..d85d067b
--- /dev/null
+++ b/charges/snowflake.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/spear.svg b/charges/spear.svg
new file mode 100644
index 00000000..9944f9d5
--- /dev/null
+++ b/charges/spear.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/spiral.svg b/charges/spiral.svg
new file mode 100644
index 00000000..05736127
--- /dev/null
+++ b/charges/spiral.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/squirrel.svg b/charges/squirrel.svg
new file mode 100644
index 00000000..bf2cc68b
--- /dev/null
+++ b/charges/squirrel.svg
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/stagLodgedRegardant.svg b/charges/stagLodgedRegardant.svg
new file mode 100644
index 00000000..024f648c
--- /dev/null
+++ b/charges/stagLodgedRegardant.svg
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/stagPassant.svg b/charges/stagPassant.svg
new file mode 100644
index 00000000..745ed25e
--- /dev/null
+++ b/charges/stagPassant.svg
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/stagsAttires.svg b/charges/stagsAttires.svg
new file mode 100644
index 00000000..c8b3692b
--- /dev/null
+++ b/charges/stagsAttires.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/stirrup.svg b/charges/stirrup.svg
new file mode 100644
index 00000000..4350ad26
--- /dev/null
+++ b/charges/stirrup.svg
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sun.svg b/charges/sun.svg
new file mode 100644
index 00000000..6d58a55c
--- /dev/null
+++ b/charges/sun.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/sunInSplendour.svg b/charges/sunInSplendour.svg
new file mode 100644
index 00000000..4de9c571
--- /dev/null
+++ b/charges/sunInSplendour.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sunInSplendour2.svg b/charges/sunInSplendour2.svg
new file mode 100644
index 00000000..d56c221d
--- /dev/null
+++ b/charges/sunInSplendour2.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/swallow.svg b/charges/swallow.svg
new file mode 100644
index 00000000..bf363a15
--- /dev/null
+++ b/charges/swallow.svg
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/swan.svg b/charges/swan.svg
new file mode 100644
index 00000000..26a345f7
--- /dev/null
+++ b/charges/swan.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/swanErased.svg b/charges/swanErased.svg
new file mode 100644
index 00000000..510c380a
--- /dev/null
+++ b/charges/swanErased.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/sword.svg b/charges/sword.svg
new file mode 100644
index 00000000..cdf8853b
--- /dev/null
+++ b/charges/sword.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/talbotPassant.svg b/charges/talbotPassant.svg
new file mode 100644
index 00000000..121e6ba4
--- /dev/null
+++ b/charges/talbotPassant.svg
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/talbotSejant.svg b/charges/talbotSejant.svg
new file mode 100644
index 00000000..e89d4b90
--- /dev/null
+++ b/charges/talbotSejant.svg
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/template.svg b/charges/template.svg
new file mode 100644
index 00000000..cad51295
--- /dev/null
+++ b/charges/template.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/thistle.svg b/charges/thistle.svg
new file mode 100644
index 00000000..09cff52a
--- /dev/null
+++ b/charges/thistle.svg
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/tower.svg b/charges/tower.svg
new file mode 100644
index 00000000..9754803a
--- /dev/null
+++ b/charges/tower.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/tree.svg b/charges/tree.svg
new file mode 100644
index 00000000..0e2854fc
--- /dev/null
+++ b/charges/tree.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/charges/trefle.svg b/charges/trefle.svg
new file mode 100644
index 00000000..8180526b
--- /dev/null
+++ b/charges/trefle.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/trefoil.svg b/charges/trefoil.svg
new file mode 100644
index 00000000..438c993e
--- /dev/null
+++ b/charges/trefoil.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/triangle.svg b/charges/triangle.svg
new file mode 100644
index 00000000..0a06d67c
--- /dev/null
+++ b/charges/triangle.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/trianglePierced.svg b/charges/trianglePierced.svg
new file mode 100644
index 00000000..6bbe2fc2
--- /dev/null
+++ b/charges/trianglePierced.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/charges/trowel.svg b/charges/trowel.svg
new file mode 100644
index 00000000..b9533474
--- /dev/null
+++ b/charges/trowel.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/unicornRampant.svg b/charges/unicornRampant.svg
new file mode 100644
index 00000000..a3102dbc
--- /dev/null
+++ b/charges/unicornRampant.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wasp.svg b/charges/wasp.svg
new file mode 100644
index 00000000..9d54306c
--- /dev/null
+++ b/charges/wasp.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wheatStalk.svg b/charges/wheatStalk.svg
new file mode 100644
index 00000000..c6113ccd
--- /dev/null
+++ b/charges/wheatStalk.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wheel.svg b/charges/wheel.svg
new file mode 100644
index 00000000..6133eee9
--- /dev/null
+++ b/charges/wheel.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/windmill.svg b/charges/windmill.svg
new file mode 100644
index 00000000..b814ef1e
--- /dev/null
+++ b/charges/windmill.svg
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wing.svg b/charges/wing.svg
new file mode 100644
index 00000000..d38622f2
--- /dev/null
+++ b/charges/wing.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wingSword.svg b/charges/wingSword.svg
new file mode 100644
index 00000000..75c2f80e
--- /dev/null
+++ b/charges/wingSword.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wolfHeadErased.svg b/charges/wolfHeadErased.svg
new file mode 100644
index 00000000..518ea83f
--- /dev/null
+++ b/charges/wolfHeadErased.svg
@@ -0,0 +1,20 @@
+
+
+
+
diff --git a/charges/wolfPassant.svg b/charges/wolfPassant.svg
new file mode 100644
index 00000000..06f8761a
--- /dev/null
+++ b/charges/wolfPassant.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wolfRampant.svg b/charges/wolfRampant.svg
new file mode 100644
index 00000000..f5c7f57c
--- /dev/null
+++ b/charges/wolfRampant.svg
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wolfStatant.svg b/charges/wolfStatant.svg
new file mode 100644
index 00000000..d592b9ef
--- /dev/null
+++ b/charges/wolfStatant.svg
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wyvern.svg b/charges/wyvern.svg
new file mode 100644
index 00000000..f09b821e
--- /dev/null
+++ b/charges/wyvern.svg
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/charges/wyvernWithWingsDisplayed.svg b/charges/wyvernWithWingsDisplayed.svg
new file mode 100644
index 00000000..d3aef9b4
--- /dev/null
+++ b/charges/wyvernWithWingsDisplayed.svg
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/fill-box.js b/components/fill-box.js
new file mode 100644
index 00000000..b4d075c3
--- /dev/null
+++ b/components/fill-box.js
@@ -0,0 +1,74 @@
+{
+ const style = /* css */ `
+ fill-box:not([disabled]) {
+ cursor: pointer;
+ }
+
+ fill-box > svg {
+ vertical-align: middle;
+ pointer-events: none;
+ }
+
+ fill-box > svg > rect {
+ stroke: #666666;
+ stroke-width: 2;
+ }
+ `;
+
+ const styleElement = document.createElement("style");
+ styleElement.setAttribute("type", "text/css");
+ styleElement.innerHTML = style;
+ document.head.appendChild(styleElement);
+}
+
+{
+ const template = document.createElement("template");
+ template.innerHTML = /* html */ `
+
+
+
+ `;
+
+ class FillBox extends HTMLElement {
+ constructor() {
+ super();
+
+ this.appendChild(template.content.cloneNode(true));
+ this.querySelector("rect")?.setAttribute("fill", this.fill);
+ this.querySelector("svg")?.setAttribute("width", this.size);
+ this.querySelector("svg")?.setAttribute("height", this.size);
+ }
+
+ static showTip() {
+ tip(this.tip);
+ }
+
+ connectedCallback() {
+ this.addEventListener("mousemove", this.constructor.showTip);
+ }
+
+ disconnectedCallback() {
+ this.removeEventListener("mousemove", this.constructor.showTip);
+ }
+
+ get fill() {
+ return this.getAttribute("fill") || "#333";
+ }
+
+ set fill(newFill) {
+ this.setAttribute("fill", newFill);
+ this.querySelector("rect")?.setAttribute("fill", newFill);
+ }
+
+ get size() {
+ return this.getAttribute("size") || "1em";
+ }
+
+ get tip() {
+ return this.dataset.tip || "Fill style. Click to change";
+ }
+ }
+
+ // cannot use Shadow DOM here as need an access to svg hatches
+ customElements.define("fill-box", FillBox);
+}
diff --git a/components/slider-input.js b/components/slider-input.js
new file mode 100644
index 00000000..f1732027
--- /dev/null
+++ b/components/slider-input.js
@@ -0,0 +1,78 @@
+{
+ const style = /* css */ `
+ slider-input {
+ display: flex;
+ align-items: center;
+ gap: .4em;
+ }
+ `;
+
+ const styleElement = document.createElement("style");
+ styleElement.setAttribute("type", "text/css");
+ styleElement.innerHTML = style;
+ document.head.appendChild(styleElement);
+}
+
+{
+ const template = document.createElement("template");
+ template.innerHTML = /* html */ `
+
+
+ `;
+
+ class SliderInput extends HTMLElement {
+ constructor() {
+ super();
+ this.appendChild(template.content.cloneNode(true));
+
+ const range = this.querySelector("input[type=range]");
+ const number = this.querySelector("input[type=number]");
+
+ range.value = number.value = this.value || this.getAttribute("value") || 50;
+ range.min = number.min = this.getAttribute("min") || 0;
+ range.max = number.max = this.getAttribute("max") || 100;
+ range.step = number.step = this.getAttribute("step") || 1;
+
+ range.addEventListener("input", this.handleEvent.bind(this));
+ number.addEventListener("input", this.handleEvent.bind(this));
+ range.addEventListener("change", this.handleEvent.bind(this));
+ number.addEventListener("change", this.handleEvent.bind(this));
+ }
+
+ handleEvent(e) {
+ const value = e.target.value;
+ const isNaN = Number.isNaN(Number(value));
+ if (isNaN || value === "") return e.stopPropagation();
+
+ const range = this.querySelector("input[type=range]");
+ const number = this.querySelector("input[type=number]");
+ this.value = range.value = number.value = value;
+
+ this.dispatchEvent(
+ new CustomEvent(e.type, {
+ detail: {value},
+ bubbles: true,
+ composed: true
+ })
+ );
+ }
+
+ set value(value) {
+ const range = this.querySelector("input[type=range]");
+ const number = this.querySelector("input[type=number]");
+ range.value = number.value = value;
+ }
+
+ get value() {
+ const number = this.querySelector("input[type=number]");
+ return number.value;
+ }
+
+ get valueAsNumber() {
+ const number = this.querySelector("input[type=number]");
+ return number.valueAsNumber;
+ }
+ }
+
+ customElements.define("slider-input", SliderInput);
+}
diff --git a/config/heightmap-templates.js b/config/heightmap-templates.js
new file mode 100644
index 00000000..29738609
--- /dev/null
+++ b/config/heightmap-templates.js
@@ -0,0 +1,166 @@
+"use strict";
+
+const heightmapTemplates = (function () {
+ const volcano = `Hill 1 90-100 44-56 40-60
+ Multiply 0.8 50-100 0 0
+ Range 1.5 30-55 45-55 40-60
+ Smooth 3 0 0 0
+ Hill 1.5 35-45 25-30 20-75
+ Hill 1 35-55 75-80 25-75
+ Hill 0.5 20-25 10-15 20-25
+ Mask 3 0 0 0`;
+
+ const highIsland = `Hill 1 90-100 65-75 47-53
+ Add 7 all 0 0
+ Hill 5-6 20-30 25-55 45-55
+ Range 1 40-50 45-55 45-55
+ Multiply 0.8 land 0 0
+ Mask 3 0 0 0
+ Smooth 2 0 0 0
+ Trough 2-3 20-30 20-30 20-30
+ Trough 2-3 20-30 60-80 70-80
+ Hill 1 10-15 60-60 50-50
+ Hill 1.5 13-16 15-20 20-75
+ Range 1.5 30-40 15-85 30-40
+ Range 1.5 30-40 15-85 60-70
+ Pit 3-5 10-30 15-85 20-80`;
+
+ const lowIsland = `Hill 1 90-99 60-80 45-55
+ Hill 1-2 20-30 10-30 10-90
+ Smooth 2 0 0 0
+ Hill 6-7 25-35 20-70 30-70
+ Range 1 40-50 45-55 45-55
+ Trough 2-3 20-30 15-85 20-30
+ Trough 2-3 20-30 15-85 70-80
+ Hill 1.5 10-15 5-15 20-80
+ Hill 1 10-15 85-95 70-80
+ Pit 5-7 15-25 15-85 20-80
+ Multiply 0.4 20-100 0 0
+ Mask 4 0 0 0`;
+
+ const continents = `Hill 1 80-85 60-80 40-60
+ Hill 1 80-85 20-30 40-60
+ Hill 6-7 15-30 25-75 15-85
+ Multiply 0.6 land 0 0
+ Hill 8-10 5-10 15-85 20-80
+ Range 1-2 30-60 5-15 25-75
+ Range 1-2 30-60 80-95 25-75
+ Range 0-3 30-60 80-90 20-80
+ Strait 2 vertical 0 0
+ Strait 1 vertical 0 0
+ Smooth 3 0 0 0
+ Trough 3-4 15-20 15-85 20-80
+ Trough 3-4 5-10 45-55 45-55
+ Pit 3-4 10-20 15-85 20-80
+ Mask 4 0 0 0`;
+
+ const archipelago = `Add 11 all 0 0
+ Range 2-3 40-60 20-80 20-80
+ Hill 5 15-20 10-90 30-70
+ Hill 2 10-15 10-30 20-80
+ Hill 2 10-15 60-90 20-80
+ Smooth 3 0 0 0
+ Trough 10 20-30 5-95 5-95
+ Strait 2 vertical 0 0
+ Strait 2 horizontal 0 0`;
+
+ const atoll = `Hill 1 75-80 50-60 45-55
+ Hill 1.5 30-50 25-75 30-70
+ Hill .5 30-50 25-35 30-70
+ Smooth 1 0 0 0
+ Multiply 0.2 25-100 0 0
+ Hill 0.5 10-20 50-55 48-52`;
+
+ const mediterranean = `Range 4-6 30-80 0-100 0-10
+ Range 4-6 30-80 0-100 90-100
+ Hill 6-8 30-50 10-90 0-5
+ Hill 6-8 30-50 10-90 95-100
+ Multiply 0.9 land 0 0
+ Mask -2 0 0 0
+ Smooth 1 0 0 0
+ Hill 2-3 30-70 0-5 20-80
+ Hill 2-3 30-70 95-100 20-80
+ Trough 3-6 40-50 0-100 0-10
+ Trough 3-6 40-50 0-100 90-100`;
+
+ const peninsula = `Range 2-3 20-35 40-50 0-15
+ Add 5 all 0 0
+ Hill 1 90-100 10-90 0-5
+ Add 13 all 0 0
+ Hill 3-4 3-5 5-95 80-100
+ Hill 1-2 3-5 5-95 40-60
+ Trough 5-6 10-25 5-95 5-95
+ Smooth 3 0 0 0
+ Invert 0.4 both 0 0`;
+
+ const pangea = `Hill 1-2 25-40 15-50 0-10
+ Hill 1-2 5-40 50-85 0-10
+ Hill 1-2 25-40 50-85 90-100
+ Hill 1-2 5-40 15-50 90-100
+ Hill 8-12 20-40 20-80 48-52
+ Smooth 2 0 0 0
+ Multiply 0.7 land 0 0
+ Trough 3-4 25-35 5-95 10-20
+ Trough 3-4 25-35 5-95 80-90
+ Range 5-6 30-40 10-90 35-65`;
+
+ const isthmus = `Hill 5-10 15-30 0-30 0-20
+ Hill 5-10 15-30 10-50 20-40
+ Hill 5-10 15-30 30-70 40-60
+ Hill 5-10 15-30 50-90 60-80
+ Hill 5-10 15-30 70-100 80-100
+ Smooth 2 0 0 0
+ Trough 4-8 15-30 0-30 0-20
+ Trough 4-8 15-30 10-50 20-40
+ Trough 4-8 15-30 30-70 40-60
+ Trough 4-8 15-30 50-90 60-80
+ Trough 4-8 15-30 70-100 80-100
+ Invert 0.25 x 0 0`;
+
+ const shattered = `Hill 8 35-40 15-85 30-70
+ Trough 10-20 40-50 5-95 5-95
+ Range 5-7 30-40 10-90 20-80
+ Pit 12-20 30-40 15-85 20-80`;
+
+ const taklamakan = `Hill 1-3 20-30 30-70 30-70
+ Hill 2-4 60-85 0-5 0-100
+ Hill 2-4 60-85 95-100 0-100
+ Hill 3-4 60-85 20-80 0-5
+ Hill 3-4 60-85 20-80 95-100
+ Smooth 3 0 0 0`;
+
+ const oldWorld = `Range 3 70 15-85 20-80
+ Hill 2-3 50-70 15-45 20-80
+ Hill 2-3 50-70 65-85 20-80
+ Hill 4-6 20-25 15-85 20-80
+ Multiply 0.5 land 0 0
+ Smooth 2 0 0 0
+ Range 3-4 20-50 15-35 20-45
+ Range 2-4 20-50 65-85 45-80
+ Strait 3-7 vertical 0 0
+ Trough 6-8 20-50 15-85 45-65
+ Pit 5-6 20-30 10-90 10-90`;
+
+ const fractious = `Hill 12-15 50-80 5-95 5-95
+ Mask -1.5 0 0 0
+ Mask 3 0 0 0
+ Add -20 30-100 0 0
+ Range 6-8 40-50 5-95 10-90`;
+
+ return {
+ volcano: {id: 0, name: "Volcano", template: volcano, probability: 3},
+ highIsland: {id: 1, name: "High Island", template: highIsland, probability: 19},
+ lowIsland: {id: 2, name: "Low Island", template: lowIsland, probability: 9},
+ continents: {id: 3, name: "Continents", template: continents, probability: 16},
+ archipelago: {id: 4, name: "Archipelago", template: archipelago, probability: 18},
+ atoll: {id: 5, name: "Atoll", template: atoll, probability: 1},
+ mediterranean: {id: 6, name: "Mediterranean", template: mediterranean, probability: 5},
+ peninsula: {id: 7, name: "Peninsula", template: peninsula, probability: 3},
+ pangea: {id: 8, name: "Pangea", template: pangea, probability: 5},
+ isthmus: {id: 9, name: "Isthmus", template: isthmus, probability: 2},
+ shattered: {id: 10, name: "Shattered", template: shattered, probability: 7},
+ taklamakan: {id: 11, name: "Taklamakan", template: taklamakan, probability: 1},
+ oldWorld: {id: 12, name: "Old World", template: oldWorld, probability: 8},
+ fractious: {id: 13, name: "Fractious", template: fractious, probability: 3}
+ };
+})();
diff --git a/config/precreated-heightmaps.js b/config/precreated-heightmaps.js
new file mode 100644
index 00000000..22f45abd
--- /dev/null
+++ b/config/precreated-heightmaps.js
@@ -0,0 +1,27 @@
+"use strict";
+
+const precreatedHeightmaps = {
+ "africa-centric": {id: 0, name: "Africa Centric"},
+ arabia: {id: 1, name: "Arabia"},
+ atlantics: {id: 2, name: "Atlantics"},
+ britain: {id: 3, name: "Britain"},
+ caribbean: {id: 4, name: "Caribbean"},
+ "east-asia": {id: 5, name: "East Asia"},
+ eurasia: {id: 6, name: "Eurasia"},
+ europe: {id: 7, name: "Europe"},
+ "europe-accented": {id: 8, name: "Europe Accented"},
+ "europe-and-central-asia": {id: 9, name: "Europe and Central Asia"},
+ "europe-central": {id: 10, name: "Europe Central"},
+ "europe-north": {id: 11, name: "Europe North"},
+ greenland: {id: 12, name: "Greenland"},
+ hellenica: {id: 13, name: "Hellenica"},
+ iceland: {id: 14, name: "Iceland"},
+ "indian-ocean": {id: 15, name: "Indian Ocean"},
+ "mediterranean-sea": {id: 16, name: "Mediterranean Sea"},
+ "middle-east": {id: 17, name: "Middle East"},
+ "north-america": {id: 18, name: "North America"},
+ "us-centric": {id: 19, name: "US-centric"},
+ "us-mainland": {id: 20, name: "US Mainland"},
+ world: {id: 21, name: "World"},
+ "world-from-pacific": {id: 22, name: "World from Pacific"}
+};
diff --git a/dropbox.html b/dropbox.html
new file mode 100644
index 00000000..cd1921da
--- /dev/null
+++ b/dropbox.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ FMG Dropbox Auth
+
+
+
+
+
diff --git a/fonts.css b/fonts.css
deleted file mode 100644
index c1cd22bc..00000000
--- a/fonts.css
+++ /dev/null
@@ -1,175 +0,0 @@
-@font-face {
- font-family: 'Amatic SC';
- font-style: normal;
- font-weight: 700;
- src: local('Amatic SC Bold'), local('AmaticSC-Bold'), url(https://fonts.gstatic.com/s/amaticsc/v11/TUZ3zwprpvBS1izr_vOMscGKfrUC.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Architects Daughter';
- font-style: normal;
- font-weight: 400;
- src: local('Architects Daughter Regular'), local('ArchitectsDaughter-Regular'), url(https://fonts.gstatic.com/s/architectsdaughter/v8/RXTgOOQ9AAtaVOHxx0IUBM3t7GjCYufj5TXV5VnA2p8.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Bitter';
- font-style: normal;
- font-weight: 400;
- src: local('Bitter Regular'), local('Bitter-Regular'), url(https://fonts.gstatic.com/s/bitter/v12/zfs6I-5mjWQ3nxqccMoL2A.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Caesar Dressing';
- font-style: normal;
- font-weight: 400;
- src: local('Caesar Dressing'), local('CaesarDressing-Regular'), url(https://fonts.gstatic.com/s/caesardressing/v6/yYLx0hLa3vawqtwdswbotmK4vrRHdrz7.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Cinzel';
- font-style: normal;
- font-weight: 400;
- src: local('Cinzel Regular'), local('Cinzel-Regular'), url(https://fonts.gstatic.com/s/cinzel/v7/zOdksD_UUTk1LJF9z4tURA.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Comfortaa';
- font-style: normal;
- font-weight: 700;
- src: local('Comfortaa Bold'), local('Comfortaa-Bold'), url(https://fonts.gstatic.com/s/comfortaa/v12/fND5XPYKrF2tQDwwfWZJI-gdm0LZdjqr5-oayXSOefg.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Dancing Script';
- font-style: normal;
- font-weight: 700;
- src: local('Dancing Script Bold'), local('DancingScript-Bold'), url(https://fonts.gstatic.com/s/dancingscript/v9/KGBfwabt0ZRLA5W1ywjowUHdOuSHeh0r6jGTOGdAKHA.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Fredericka the Great';
- font-style: normal;
- font-weight: 400;
- src: local('Fredericka the Great'), local('FrederickatheGreat'), url(https://fonts.gstatic.com/s/frederickathegreat/v6/9Bt33CxNwt7aOctW2xjbCstzwVKsIBVV--Sjxbc.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Gloria Hallelujah';
- font-style: normal;
- font-weight: 400;
- src: local('Gloria Hallelujah'), local('GloriaHallelujah'), url(https://fonts.gstatic.com/s/gloriahallelujah/v9/CA1k7SlXcY5kvI81M_R28cNDay8z-hHR7F16xrcXsJw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Great Vibes';
- font-style: normal;
- font-weight: 400;
- src: local('Great Vibes'), local('GreatVibes-Regular'), url(https://fonts.gstatic.com/s/greatvibes/v5/6q1c0ofG6NKsEhAc2eh-3Y4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'IM Fell English';
- font-style: normal;
- font-weight: 400;
- src: local('IM FELL English Roman'), local('IM_FELL_English_Roman'), url(https://fonts.gstatic.com/s/imfellenglish/v7/xwIisCqGFi8pff-oa9uSVAkYLEKE0CJQa8tfZYc_plY.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Kaushan Script';
- font-style: normal;
- font-weight: 400;
- src: local('Kaushan Script'), local('KaushanScript-Regular'), url(https://fonts.gstatic.com/s/kaushanscript/v6/qx1LSqts-NtiKcLw4N03IEd0sm1ffa_JvZxsF_BEwQk.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'MedievalSharp';
- font-style: normal;
- font-weight: 400;
- src: local('MedievalSharp'), url(https://fonts.gstatic.com/s/medievalsharp/v9/EvOJzAlL3oU5AQl2mP5KdgptMqhwMg.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Metamorphous';
- font-style: normal;
- font-weight: 400;
- src: local('Metamorphous'), url(https://fonts.gstatic.com/s/metamorphous/v7/Wnz8HA03aAXcC39ZEX5y133EOyqs.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Montez';
- font-style: normal;
- font-weight: 400;
- src: local('Montez Regular'), local('Montez-Regular'), url(https://fonts.gstatic.com/s/montez/v8/aq8el3-0osHIcFK6bXAPkw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Nova Script';
- font-style: normal;
- font-weight: 400;
- src: local('Nova Script Regular'), local('NovaScript-Regular'), url(https://fonts.gstatic.com/s/novascript/v10/7Au7p_IpkSWSTWaFWkumvlQKGFw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Orbitron';
- font-style: normal;
- font-weight: 400;
- src: local('Orbitron Regular'), local('Orbitron-Regular'), url(https://fonts.gstatic.com/s/orbitron/v9/HmnHiRzvcnQr8CjBje6GQvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Satisfy';
- font-style: normal;
- font-weight: 400;
- src: local('Satisfy Regular'), local('Satisfy-Regular'), url(https://fonts.gstatic.com/s/satisfy/v8/2OzALGYfHwQjkPYWELy-cw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Shadows Into Light';
- font-style: normal;
- font-weight: 400;
- src: local('Shadows Into Light'), local('ShadowsIntoLight'), url(https://fonts.gstatic.com/s/shadowsintolight/v7/clhLqOv7MXn459PTh0gXYFK2TSYBz0eNcHnp4YqE4Ts.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
-
-@font-face {
- font-family: 'Uncial Antiqua';
- font-style: normal;
- font-weight: 400;
- src: local('Uncial Antiqua'), local('UncialAntiqua-Regular'), url(https://fonts.gstatic.com/s/uncialantiqua/v5/N0bM2S5WOex4OUbESzoESK-i-MfWQZQ.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Underdog';
- font-style: normal;
- font-weight: 400;
- src: local('Underdog'), local('Underdog-Regular'), url(https://fonts.gstatic.com/s/underdog/v6/CHygV-jCElj7diMroWSlWV8.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-@font-face {
- font-family: 'Yellowtail';
- font-style: normal;
- font-weight: 400;
- src: local('Yellowtail Regular'), local('Yellowtail-Regular'), url(https://fonts.gstatic.com/s/yellowtail/v8/GcIHC9QEwVkrA19LJU1qlPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
-}
diff --git a/heightmaps/africa-centric.png b/heightmaps/africa-centric.png
new file mode 100644
index 00000000..02e4a311
Binary files /dev/null and b/heightmaps/africa-centric.png differ
diff --git a/heightmaps/arabia.png b/heightmaps/arabia.png
new file mode 100644
index 00000000..27946711
Binary files /dev/null and b/heightmaps/arabia.png differ
diff --git a/heightmaps/atlantics.png b/heightmaps/atlantics.png
new file mode 100644
index 00000000..be123705
Binary files /dev/null and b/heightmaps/atlantics.png differ
diff --git a/heightmaps/britain.png b/heightmaps/britain.png
new file mode 100644
index 00000000..60e08da4
Binary files /dev/null and b/heightmaps/britain.png differ
diff --git a/heightmaps/caribbean.png b/heightmaps/caribbean.png
new file mode 100644
index 00000000..e4a8ed05
Binary files /dev/null and b/heightmaps/caribbean.png differ
diff --git a/heightmaps/east-asia.png b/heightmaps/east-asia.png
new file mode 100644
index 00000000..41144db5
Binary files /dev/null and b/heightmaps/east-asia.png differ
diff --git a/heightmaps/eurasia.png b/heightmaps/eurasia.png
new file mode 100644
index 00000000..bdbdb4d7
Binary files /dev/null and b/heightmaps/eurasia.png differ
diff --git a/heightmaps/europe-accented.png b/heightmaps/europe-accented.png
new file mode 100644
index 00000000..9be9480e
Binary files /dev/null and b/heightmaps/europe-accented.png differ
diff --git a/heightmaps/europe-and-central-asia.png b/heightmaps/europe-and-central-asia.png
new file mode 100644
index 00000000..c23e97ed
Binary files /dev/null and b/heightmaps/europe-and-central-asia.png differ
diff --git a/heightmaps/europe-central.png b/heightmaps/europe-central.png
new file mode 100644
index 00000000..b220f546
Binary files /dev/null and b/heightmaps/europe-central.png differ
diff --git a/heightmaps/europe-north.png b/heightmaps/europe-north.png
new file mode 100644
index 00000000..1bb49184
Binary files /dev/null and b/heightmaps/europe-north.png differ
diff --git a/heightmaps/europe.png b/heightmaps/europe.png
new file mode 100644
index 00000000..59dfdfea
Binary files /dev/null and b/heightmaps/europe.png differ
diff --git a/heightmaps/greenland.png b/heightmaps/greenland.png
new file mode 100644
index 00000000..3136c539
Binary files /dev/null and b/heightmaps/greenland.png differ
diff --git a/heightmaps/hellenica.png b/heightmaps/hellenica.png
new file mode 100644
index 00000000..2681d6ec
Binary files /dev/null and b/heightmaps/hellenica.png differ
diff --git a/heightmaps/iceland.png b/heightmaps/iceland.png
new file mode 100644
index 00000000..88463158
Binary files /dev/null and b/heightmaps/iceland.png differ
diff --git a/heightmaps/import-rules.txt b/heightmaps/import-rules.txt
new file mode 100644
index 00000000..69499114
--- /dev/null
+++ b/heightmaps/import-rules.txt
@@ -0,0 +1,8 @@
+To get heightmap with correct height scale:
+1. Open https://tangrams.github.io/heightmapper
+2. Toggle off auto-exposure
+3. Set max elevation to 2000
+4. Set min elevation to -500
+5. Find region you like
+6. Render image
+7. Optionally rescale image to a smaller size (e.g. 500x300px) as high resolution is not used
diff --git a/heightmaps/indian-ocean.png b/heightmaps/indian-ocean.png
new file mode 100644
index 00000000..860ca952
Binary files /dev/null and b/heightmaps/indian-ocean.png differ
diff --git a/heightmaps/mediterranean-sea.png b/heightmaps/mediterranean-sea.png
new file mode 100644
index 00000000..6a7c8bb3
Binary files /dev/null and b/heightmaps/mediterranean-sea.png differ
diff --git a/heightmaps/middle-east.png b/heightmaps/middle-east.png
new file mode 100644
index 00000000..bfcc55bb
Binary files /dev/null and b/heightmaps/middle-east.png differ
diff --git a/heightmaps/north-america.png b/heightmaps/north-america.png
new file mode 100644
index 00000000..1c1f1ad5
Binary files /dev/null and b/heightmaps/north-america.png differ
diff --git a/heightmaps/us-centric.png b/heightmaps/us-centric.png
new file mode 100644
index 00000000..7094df6a
Binary files /dev/null and b/heightmaps/us-centric.png differ
diff --git a/heightmaps/us-mainland.png b/heightmaps/us-mainland.png
new file mode 100644
index 00000000..3b1984e7
Binary files /dev/null and b/heightmaps/us-mainland.png differ
diff --git a/heightmaps/world-from-pacific.png b/heightmaps/world-from-pacific.png
new file mode 100644
index 00000000..02043165
Binary files /dev/null and b/heightmaps/world-from-pacific.png differ
diff --git a/heightmaps/world.png b/heightmaps/world.png
new file mode 100644
index 00000000..22a79298
Binary files /dev/null and b/heightmaps/world.png differ
diff --git a/icons.css b/icons.css
index 01b6a6ca..4740f091 100644
--- a/icons.css
+++ b/icons.css
@@ -248,17 +248,43 @@
.icon-r:before {font-style:italic;content:'r:';}
.icon-a:before {font-style:italic;content:'a:';}
.icon-smooth:before {font-weight: bold;content:'∼';}
-.icon-disrupt:before {font-weight: bold;content:'෴';}
+.icon-disrupt:before {font-weight: bold;content:'⥄';}
.icon-if:before {font-style: italic; font-weight: bold;content:'if';}
-.icon-fleur:before {content: '⚜'; font-size: 1.1em; margin: -2px;}
-.icon-curve:before {content: 'C';}
-.icon-area:before {content: 'O';}
-.icon-curve:before,
-.icon-area:before {
- font-size: 1.5em;
- padding: 0;
- writing-mode: tb-rl;
- margin-left: 1px;
- width: .6em;
- font-family: monospace;
-}
\ No newline at end of file
+.icon-coa:before {content:'\f3ed'; font-size: .9em; color: #999;} /* '' */
+.icon-half:before {font-weight: bold;content:'½';}
+.icon-voice:before {content:'🔊';}
+.icon-robot:before {content:'🤖';}
+.icon-die:before {content:'🎲';}
+.icon-button-die:before {content:'🎲'; padding-right: .4em;}
+.icon-button-power:before {content:'💪'; padding-right: .6em;}
+
+.icon-button-melee:before {content:'⚔️'; padding-right: .4em;}
+.icon-button-skirmish:before {content:'🎯'; padding-right: .4em;}
+.icon-button-pursue:before {content:'🐎'; padding-right: .4em;}
+.icon-button-retreat:before {content:'🏳️'; padding-right: .4em;}
+.icon-button-shelling:before {content:'💣'; padding-right: .4em;}
+.icon-button-boarding:before {content:'⚔️'; padding-right: .4em;}
+.icon-button-chase:before {content:'⛵'; padding-right: .4em;}
+.icon-button-withdrawal:before {content:'🏳️'; padding-right: .4em;}
+.icon-button-bombardment:before {content:'💣'; padding-right: .4em;}
+.icon-button-blockade:before {content:'⏳'; padding-right: .4em;}
+.icon-button-sheltering:before {content:'🔒'; padding-right: .4em;}
+.icon-button-sortie:before {content:'🚪'; padding-right: .4em;}
+.icon-button-defense:before {content:'🛡️'; padding-right: .4em;}
+.icon-button-storming:before {content:'⚔️'; padding-right: .4em;}
+.icon-button-looting:before {content:'☠️'; padding-right: .4em;}
+.icon-button-surrendering:before {content:'🏳️'; padding-right: .4em;}
+.icon-button-surprise:before {content:'⚡'; padding-right: .4em;}
+.icon-button-shock:before {content:'💫'; padding-right: .4em;}
+.icon-button-flee:before {content:'⛵'; padding-right: .4em;}
+.icon-button-waiting:before {content:'⌛'; padding-right: .4em;}
+.icon-button-maneuvering:before {content:'💢'; padding-right: .4em;}
+.icon-button-dogfight:before {content:'🐕'; padding-right: .4em;}
+
+.icon-button-field:before {content:'🗡️'; padding-right: .4em;}
+.icon-button-naval:before {content:'🌊'; padding-right: .4em;}
+.icon-button-siege:before {content:'🏰'; padding-right: .4em;}
+.icon-button-ambush:before {content:'🌳'; padding-right: .4em;}
+.icon-button-landing:before {content:'⚓'; padding-right: .4em;}
+.icon-button-air:before {content:'💨'; padding-right: .4em;}
+.icon-button-screenshot:before {content:'🖥️'; padding-right: .4em;}
diff --git a/images/Discord.png b/images/Discord.png
new file mode 100644
index 00000000..78dab317
Binary files /dev/null and b/images/Discord.png differ
diff --git a/images/Tumblr.png b/images/Tumblr.png
deleted file mode 100644
index 2b65ddad..00000000
Binary files a/images/Tumblr.png and /dev/null differ
diff --git a/images/favicon-32x32.png b/images/favicon-32x32.png
deleted file mode 100644
index e1815ea8..00000000
Binary files a/images/favicon-32x32.png and /dev/null differ
diff --git a/images/favicon-16x16.png b/images/icons/favicon-16x16.png
similarity index 100%
rename from images/favicon-16x16.png
rename to images/icons/favicon-16x16.png
diff --git a/images/icons/favicon-32x32.png b/images/icons/favicon-32x32.png
new file mode 100644
index 00000000..13e5179d
Binary files /dev/null and b/images/icons/favicon-32x32.png differ
diff --git a/images/icons/icon_x512.png b/images/icons/icon_x512.png
new file mode 100644
index 00000000..f1f8c9aa
Binary files /dev/null and b/images/icons/icon_x512.png differ
diff --git a/images/icons/maskable_icon_x128.png b/images/icons/maskable_icon_x128.png
new file mode 100644
index 00000000..fa877d1b
Binary files /dev/null and b/images/icons/maskable_icon_x128.png differ
diff --git a/images/icons/maskable_icon_x192.png b/images/icons/maskable_icon_x192.png
new file mode 100644
index 00000000..3322eab3
Binary files /dev/null and b/images/icons/maskable_icon_x192.png differ
diff --git a/images/icons/maskable_icon_x384.png b/images/icons/maskable_icon_x384.png
new file mode 100644
index 00000000..c7e7e705
Binary files /dev/null and b/images/icons/maskable_icon_x384.png differ
diff --git a/images/icons/maskable_icon_x512.png b/images/icons/maskable_icon_x512.png
new file mode 100644
index 00000000..5b2361fd
Binary files /dev/null and b/images/icons/maskable_icon_x512.png differ
diff --git a/images/kiwiroo.png b/images/kiwiroo.png
new file mode 100644
index 00000000..4f34ae7e
Binary files /dev/null and b/images/kiwiroo.png differ
diff --git a/images/pattern1.png b/images/pattern1.png
new file mode 100644
index 00000000..59375796
Binary files /dev/null and b/images/pattern1.png differ
diff --git a/images/pattern2.png b/images/pattern2.png
new file mode 100644
index 00000000..e96f68fa
Binary files /dev/null and b/images/pattern2.png differ
diff --git a/images/pattern3.png b/images/pattern3.png
new file mode 100644
index 00000000..636fde6f
Binary files /dev/null and b/images/pattern3.png differ
diff --git a/images/pattern4.png b/images/pattern4.png
new file mode 100644
index 00000000..d96aa18a
Binary files /dev/null and b/images/pattern4.png differ
diff --git a/images/pattern5.png b/images/pattern5.png
new file mode 100644
index 00000000..82a2af7c
Binary files /dev/null and b/images/pattern5.png differ
diff --git a/images/pattern6.png b/images/pattern6.png
new file mode 100644
index 00000000..dc9271ef
Binary files /dev/null and b/images/pattern6.png differ
diff --git a/images/preview.png b/images/preview.png
index aaa8459c..2b150732 100644
Binary files a/images/preview.png and b/images/preview.png differ
diff --git a/images/textures/antique-big.jpg b/images/textures/antique-big.jpg
new file mode 100644
index 00000000..711b1681
Binary files /dev/null and b/images/textures/antique-big.jpg differ
diff --git a/images/textures/antique-small.jpg b/images/textures/antique-small.jpg
new file mode 100644
index 00000000..851b5d07
Binary files /dev/null and b/images/textures/antique-small.jpg differ
diff --git a/images/textures/folded-paper-big.jpg b/images/textures/folded-paper-big.jpg
new file mode 100644
index 00000000..c2c4d761
Binary files /dev/null and b/images/textures/folded-paper-big.jpg differ
diff --git a/images/textures/folded-paper-small.jpg b/images/textures/folded-paper-small.jpg
new file mode 100644
index 00000000..88418a13
Binary files /dev/null and b/images/textures/folded-paper-small.jpg differ
diff --git a/images/textures/gray-paper.jpg b/images/textures/gray-paper.jpg
new file mode 100644
index 00000000..238d6e4c
Binary files /dev/null and b/images/textures/gray-paper.jpg differ
diff --git a/images/textures/iran-small.jpg b/images/textures/iran-small.jpg
new file mode 100644
index 00000000..39f34512
Binary files /dev/null and b/images/textures/iran-small.jpg differ
diff --git a/images/textures/marble-big.jpg b/images/textures/marble-big.jpg
new file mode 100644
index 00000000..c1d2a6d4
Binary files /dev/null and b/images/textures/marble-big.jpg differ
diff --git a/images/textures/marble-blue-big.jpg b/images/textures/marble-blue-big.jpg
new file mode 100644
index 00000000..dbfc0975
Binary files /dev/null and b/images/textures/marble-blue-big.jpg differ
diff --git a/images/textures/marble-blue-small.jpg b/images/textures/marble-blue-small.jpg
new file mode 100644
index 00000000..2e95fdcb
Binary files /dev/null and b/images/textures/marble-blue-small.jpg differ
diff --git a/images/textures/marble-small.jpg b/images/textures/marble-small.jpg
new file mode 100644
index 00000000..10d1a9ab
Binary files /dev/null and b/images/textures/marble-small.jpg differ
diff --git a/images/textures/mars-big.jpg b/images/textures/mars-big.jpg
new file mode 100644
index 00000000..3fd39dae
Binary files /dev/null and b/images/textures/mars-big.jpg differ
diff --git a/images/textures/mars-small.jpg b/images/textures/mars-small.jpg
new file mode 100644
index 00000000..75de8dd3
Binary files /dev/null and b/images/textures/mars-small.jpg differ
diff --git a/images/textures/mauritania-small.jpg b/images/textures/mauritania-small.jpg
new file mode 100644
index 00000000..22d9cecf
Binary files /dev/null and b/images/textures/mauritania-small.jpg differ
diff --git a/images/textures/mercury-big.jpg b/images/textures/mercury-big.jpg
new file mode 100644
index 00000000..7e06f0ee
Binary files /dev/null and b/images/textures/mercury-big.jpg differ
diff --git a/images/textures/mercury-small.jpg b/images/textures/mercury-small.jpg
new file mode 100644
index 00000000..53f31ee3
Binary files /dev/null and b/images/textures/mercury-small.jpg differ
diff --git a/images/textures/ocean.jpg b/images/textures/ocean.jpg
new file mode 100644
index 00000000..981366ca
Binary files /dev/null and b/images/textures/ocean.jpg differ
diff --git a/images/textures/pergamena-small.jpg b/images/textures/pergamena-small.jpg
new file mode 100644
index 00000000..951f9eda
Binary files /dev/null and b/images/textures/pergamena-small.jpg differ
diff --git a/images/textures/plaster.jpg b/images/textures/plaster.jpg
new file mode 100644
index 00000000..8ec85c81
Binary files /dev/null and b/images/textures/plaster.jpg differ
diff --git a/images/textures/soiled-paper-vertical.png b/images/textures/soiled-paper-vertical.png
new file mode 100644
index 00000000..f8bb720e
Binary files /dev/null and b/images/textures/soiled-paper-vertical.png differ
diff --git a/images/textures/soiled-paper.jpg b/images/textures/soiled-paper.jpg
new file mode 100644
index 00000000..00333992
Binary files /dev/null and b/images/textures/soiled-paper.jpg differ
diff --git a/images/textures/spain-small.jpg b/images/textures/spain-small.jpg
new file mode 100644
index 00000000..a413f508
Binary files /dev/null and b/images/textures/spain-small.jpg differ
diff --git a/images/textures/timbercut-big.jpg b/images/textures/timbercut-big.jpg
new file mode 100644
index 00000000..7dc9b656
Binary files /dev/null and b/images/textures/timbercut-big.jpg differ
diff --git a/images/textures/timbercut-small.jpg b/images/textures/timbercut-small.jpg
new file mode 100644
index 00000000..a73e47be
Binary files /dev/null and b/images/textures/timbercut-small.jpg differ
diff --git a/index.css b/index.css
index 877f4e4e..373bf63c 100644
--- a/index.css
+++ b/index.css
@@ -1,813 +1,988 @@
-@font-face {
- font-family: 'Almendra SC';
- font-style: normal;
- font-weight: 400;
- src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2');
+:root {
+ --monospace: Consolas, monospace;
+ --serif: Georgia, serif;
+ --sans-serif: Helvetica, Arial, sans-serif;
}
-body {
- border: 0;
- height: 100%;
+/* hide Google translate header */
+body > .skiptranslate {
+ display: none;
}
-input, select, button {
- font-size: 1em;
+/* hide Google translate in-progress widget */
+body > .skiptranslate + div {
+ display: none;
+}
+
+/* make translated text wrapper non-blocking */
+font {
+ pointer-events: none;
+}
+
+input,
+select,
+button {
+ font-size: 1em;
+}
+
+input,
+select,
+textarea {
+ border: 0.5px solid #dbdfe6;
+ border-radius: 0.5px;
+ box-sizing: border-box;
}
select {
- height: 1.6em;
+ height: 1.6em;
+ border-top-color: #abadb3;
+ padding: 0;
+ text-indent: 0px;
}
input {
- height: 1.1em;
+ border-top-color: #abadb3;
+ padding: 2px;
+ text-indent: 1px;
+}
+
+input:read-only {
+ cursor: default;
+}
+
+input[type="radio"] {
+ vertical-align: bottom;
+ cursor: pointer;
+}
+
+textarea {
+ padding: 3px;
+ box-sizing: border-box;
+ width: 100%;
+}
+
+iframe {
+ border: 0;
+ width: 100%;
}
#map {
- background-color: #000000;
- mask-mode: alpha;
- mask-clip: no-clip;
- fill-rule: evenodd;
+ background-color: #000000;
+ mask-mode: alpha;
+ mask-clip: no-clip;
+ fill-rule: evenodd;
+ user-select: none;
}
#canvas {
- position: absolute;
- pointer-events: none;
+ position: absolute;
+ pointer-events: none;
}
#preview {
- position: absolute;
- bottom: 1em;
- left: 1em;
- cursor: pointer;
+ position: absolute;
+ bottom: 1em;
+ left: 1em;
+ cursor: pointer;
}
#pickerContainer {
- position: absolute;
+ position: absolute;
+ z-index: 100;
}
-input, button, select, a, textarea {
- outline: none;
+input,
+button,
+select,
+a,
+textarea {
+ outline: none;
}
-button, select, a {
- cursor: pointer;
+button,
+select,
+a {
+ cursor: pointer;
}
.pointer {
- cursor: pointer;
+ cursor: pointer !important;
}
#prec text {
- font-size: 32px;
- stroke: none;
- text-shadow: 1px 1px 1px #9daac9;
- user-select: none;
+ font-size: 32px;
+ stroke: none;
+ text-shadow: 1px 1px 1px #9daac9;
+ user-select: none;
}
-#population, #cells, #compass {
- fill: none;
-}
-
-#biomes {
- stroke-width: .7;
- fill-rule: evenodd;
+#population,
+#cells,
+#compass {
+ fill: none;
}
#landmass {
- mask: url(#land);
- fill-rule: evenodd;
+ mask: url(#land);
+ fill-rule: evenodd;
}
-#lakes, #coastline {
- cursor: pointer;
+#lakes,
+#coastline,
+#armies,
+#ice,
+#emblems {
+ cursor: pointer;
}
#temperature {
- font-family: sans-serif;
- font-weight: 700;
- text-anchor: middle;
- dominant-baseline: central;
- text-shadow: 0px 0px 10px white;
- fill-rule: evenodd;
+ font-family: var(--sans-serif);
+ font-weight: 700;
+ text-anchor: middle;
+ dominant-baseline: central;
+ text-shadow: 0px 0px 10px white;
+ fill-rule: evenodd;
}
-#oceanLayers {
- fill-rule: evenodd;
+#oceanLayers,
+#terrs {
+ fill-rule: evenodd;
}
#coastline {
- fill: none;
- stroke-linejoin: round;
+ fill: none;
+ stroke-linejoin: round;
}
-#regions, #provs, #terrs, #biomes, #tooltip, #temperature, #texture, #landmass {
- pointer-events: none;
+t,
+#regions,
+#cults,
+#relig,
+#biomes,
+#provincesBody,
+#terrs,
+#tooltip,
+#temperature,
+#texture,
+#landmass,
+#vignette,
+#gridOverlay,
+#fogging {
+ pointer-events: none;
}
-#statesBody, #provincesBody {
- stroke-width: 2;
- fill-rule: evenodd;
- mask: url(#land);
+#armies text {
+ pointer-events: none;
+ user-select: none;
+ stroke: none;
+ fill: #fff;
+ text-shadow: 0 0 4px #000;
+ dominant-baseline: central;
+ text-anchor: middle;
+ font-family: var(--sans-serif);
+ fill-opacity: 1;
+}
+
+#armies text.regimentIcon {
+ font-size: 0.8em;
}
#statesHalo {
- fill: none;
- filter: url(#blur5);
- /*animation: hideshow 3s infinite;*/
+ fill: none;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+}
+
+#statesBody,
+#provincesBody,
+#relig,
+#biomes,
+#cults {
+ stroke-linejoin: round;
+ fill-rule: evenodd;
+}
+
+#statesBody,
+#provincesBody,
+#relig,
+#cults {
+ mask: url(#land);
}
#borders {
- stroke-linejoin: round;
- fill: none;
-}
-
-#provinceLabels {
- text-anchor: middle;
- fill: "#18181a";
- font-family: "Georgia";
- font-size: 9px;
-}
-
-@keyframes hideshow {
- 0% {stroke-width: 1;}
- 50% {stroke-width: 10;}
+ stroke-linejoin: round;
+ fill: none;
}
#rivers {
- stroke: none;
- mask: url(#land);
- cursor: pointer;
+ stroke: none;
+ mask: url(#land);
+ cursor: pointer;
+ fill-rule: nonzero;
}
#anchors {
- pointer-events: none;
+ pointer-events: none;
}
-#terrain, #burgIcons {
- cursor: pointer;
+#terrain,
+#burgIcons {
+ cursor: pointer;
}
.strokes {
- stroke-width: .08px;
- width: 2px;
- stroke: #5c5c70;
- stroke-dasharray: 0.5, 0.7;
- stroke-linecap: round;
+ stroke-width: 0.08px;
+ width: 2px;
+ stroke: #5c5c70;
+ stroke-dasharray: 0.5, 0.7;
+ stroke-linecap: round;
}
#routes {
- fill: none;
- cursor: pointer;
-}
-
-#options .pressed {
- background-color: #896c77 !important;
- font-style: italic;
+ fill: none;
+ cursor: pointer;
}
i.icon-lock {
- cursor: pointer;
+ cursor: pointer;
}
-#riverAngle, #riverWidthInput, #riverIncrement {
- width: 7em;
-}
-
-.editButtonS {
- display: none;
- cursor: pointer;
-}
-
-#riverEditor > *,
-#routeEditor > *,
-#labelEditor div,
-#markerEditor div {
- display: inline-block;
+#labelEditor div {
+ display: inline-block;
}
#labels {
- text-anchor: start;
- dominant-baseline: central;
- text-shadow: 0 0 4px white;
- cursor: pointer;
+ text-anchor: middle;
+ dominant-baseline: central;
+ cursor: pointer;
}
.chartInfo {
- text-align: center;
- font-family: sans-serif;
- font-style: italic;
- font-size: 12px;
+ text-align: center;
+ font-family: var(--sans-serif);
+ font-style: italic;
+ font-size: 12px;
}
-#hierarchy .selected {
- stroke: #c13119;
- stroke-width: 1;
- cursor: move;
-}
-
-#hierarchy text,
#statesTree text,
#provincesTree text {
- pointer-events: none;
- user-select: none;
- stroke: none;
- font-size: 11px;
+ pointer-events: none;
+ user-select: none;
+ stroke: none;
+ font-size: 11px;
}
#statesTree circle {
- filter: url(#dropShadow05);
- stroke: #666666;
- stroke-width: 1;
+ filter: url(#dropShadow05);
+ stroke: #666666;
+ stroke-width: 1;
}
#statesTree circle.selected,
#provincesTree .selected {
- stroke: #c13119;
- stroke-width: 2;
+ stroke: #c13119;
+ stroke-width: 2;
}
-.dragLine {
- marker-end: url(#end-arrow);
- stroke: #333333;
- stroke-dasharray: 5;
- stroke-dashoffset: 100;
- animation: dash 8s linear backwards;
+.regimentDragLine {
+ marker-end: url(#end-arrow);
+ stroke: #333333;
+ stroke-dasharray: 5;
+ stroke-dashoffset: 1000;
+ animation: dash 80s linear backwards;
+}
+
+.arrow {
+ marker-end: url(#end-arrow-small);
+ stroke: #555;
+ stroke-width: 0.5;
}
@keyframes dash {
- to {stroke-dashoffset: 0}
+ to {
+ stroke-dashoffset: 0;
+ }
}
+#provinceLabels,
#burgLabels {
- dominant-baseline: alphabetic;
- text-anchor: middle;
+ dominant-baseline: alphabetic;
+ text-anchor: middle;
}
-#routeLength,
-#riverLength,
-#lakeArea,
+#routeLength,
#coastlineArea {
- background-color: #eeeeee;
- border: 1px solid #a5a5a5;
- line-height: 1.3em;
- cursor: default;
+ background-color: #eeeeee;
+ border: 1px solid #a5a5a5;
+ line-height: 1.3em;
+ cursor: default;
}
#brushCircle {
- stroke: #373737;
- stroke-width: 1.5px;
- stroke-dasharray: 7;
- stroke-linecap: butt;
- fill: none;
+ stroke: #373737;
+ stroke-width: 1.5px;
+ stroke-dasharray: 7;
+ stroke-linecap: butt;
+ fill: none;
}
text.drag {
- text-shadow: 0 0 1px red;
+ text-shadow: 0 0 1px red;
+}
+
+#dialogs {
+ background-color: var(--bg-dialogs);
}
.draggable {
- cursor: move;
+ cursor: move;
}
-.ui-dialog, #optionsContainer {
- user-select: none;
+.ui-widget-header {
+ border-bottom: 1px solid var(--dark-solid);
+ background: var(--header);
+ color: #ffffff;
+ font-weight: bold;
}
-#collapsible {
- margin: 11px;
- border: 0;
- position: absolute;
- z-index: 2;
+button.ui-button:disabled {
+ filter: brightness(0.95);
}
-div.tab > button#optionsHide {
- width: 7%;
- height: 100%;
- font-family: Times New Roman, Arial;
- padding: 7px 0px;
+button.ui-button:disabled:hover {
+ cursor: default;
+}
+
+.ui-dialog,
+#optionsContainer {
+ user-select: none;
+}
+
+#optionsTrigger {
+ padding: 0.6em 0.45em;
+}
+
+@media (max-width: 600px) {
+ #optionsTrigger {
+ font-size: 2em;
+ padding: 0;
+ width: 1.3em;
+ height: 1.6em;
+ border: solid 1px #5e4fa2;
+ }
}
#options {
- margin: 10px;
- font-family: Consolas, monospace;
- position: absolute;
- border: solid 1px #5e4fa2;
- width: 300px;
- background-position: center;
- background-size: cover;
- background-blend-mode: color-dodge;
+ position: absolute;
+ font-family: var(--monospace);
+ border: solid 1px #5e4fa2;
+ margin: 10px;
+ padding-bottom: 0.3em;
+ background: var(--bg-light);
}
-#options input, #options select, #options button {
- font-family: Consolas, monospace;
+#options input,
+#options select,
+#options button {
+ font-family: var(--monospace);
+}
+
+#collapsible {
+ margin: 11px;
+ border: 0;
+ position: absolute;
+ z-index: 2;
+ display: grid;
+ grid-template-columns: 2fr 7fr;
}
.tab {
- overflow: hidden;
- border-bottom: 1px solid #5d4651;
- height: 2.3em;
+ border-bottom: 1px solid var(--dark-solid);
+ height: 2.2em;
+ display: flex;
+ justify-content: space-between;
+}
+
+div.tab > button#optionsHide {
+ width: auto;
+ font-family: var(--sans-serif);
+ padding: 0.6em 0.45em;
+}
+
+button.options {
+ width: 100%;
+ background-color: var(--bg-main);
+ font-weight: bold;
+ border: none;
+ transition: 0.2s;
+}
+
+button.active {
+ background-color: var(--header);
+ color: white;
+}
+
+button.options:hover {
+ background-color: var(--header-active);
+ color: white;
}
#options p {
- font-style: italic;
- font-weight: bold;
- margin-bottom: 0;
+ font-style: italic;
+ font-weight: bold;
+ margin: 0.8em 0 0 0;
+}
+
+#options .tip {
+ color: #444;
+ font-size: 0.9em;
+ font-family: sans-serif;
+ font-style: italic;
+ margin-left: 0.5em;
}
#aboutContent {
- text-align: justify;
+ text-align: justify;
}
#aboutContent p {
- font-weight: normal;
+ font-weight: normal;
+ font-style: normal;
}
#aboutContent a {
- color: #1d1b1c;
- font-weight: bold;
+ color: #1d1b1c;
+ font-weight: bold;
+ text-decoration: underline;
}
#optionsContent span {
- font-size: .9em;
+ font-size: 0.9em;
}
#options i {
- color: #31272c;
- font-size: .8em;
- cursor: pointer;
+ color: #31272c;
+ font-size: 0.85em;
+ cursor: pointer;
+}
+
+#options button i.icon-cog {
+ position: absolute;
+ padding: 0.1em 0.3em;
+ background-color: var(--bg-lighter);
+ border-radius: 50%;
+ visibility: hidden;
+ opacity: 0;
+ transition: 0.4s ease-in-out;
+}
+
+#options button i.icon-cog:hover {
+ color: #111;
+ background-color: var(--bg-light);
+ transform: rotateZ(180deg);
+}
+
+#options button i.icon-cog:active {
+ transform: translateY(1px);
+}
+
+#options button:hover i.icon-cog {
+ visibility: visible;
+ opacity: 1;
}
input[type="color"] {
- -webkit-appearance: none;
- cursor: pointer;
- border: 1px solid #a9a9a9;
+ -webkit-appearance: none;
+ cursor: pointer;
+ border: 1px solid #a9a9a9;
}
input[type="color"]::-webkit-color-swatch-wrapper {
- padding: 0;
+ padding: 0;
}
#options input[type="color"] {
- width: 4.5em;
- height: 1em;
- border: 0;
+ width: 4.5em;
+ height: 1em;
+ border: 0;
}
#convertImageDialog input[type="color"] {
- width: 38px;
- padding: 0;
- border: 0;
- background: none;
- cursor: pointer;
+ width: 38px;
+ padding: 0;
+ border: 0;
+ background: none;
+ cursor: pointer;
}
#options select {
- height: 1.5em;
- border: 0;
- cursor: pointer;
- font-size: smaller;
-}
-
-#options input[type="range"] {
- height: 8px;
- background: 0;
- -moz-appearance: none;
- -webkit-appearance: none;
- margin-left: 0;
-}
-
-#options input[type="range"]::-webkit-slider-thumb {
- -webkit-appearance: none;
- border-radius: 15%;
- width: .91em;
- height: .91em;
- background: #a58394;
- border: 1px solid #5d4651;
- cursor: pointer;
- margin-top: -.4em;
- box-shadow: .5px .5px 0px #5d4651;
-}
-
-#options input[type="range"]::-moz-range-thumb {
- -moz-appearance: none;
- border-radius: 15%;
- width: .73em;
- height: .73em;
- background: #a58394;
- border: 1px solid #5d4651;
- cursor: pointer;
- box-shadow: .5px .5px 0px #5d4651;
-}
-
-#options input[type=range]::-webkit-slider-runnable-track {
- height: 2px;
- background: #ffffff;
-}
-
-#options input[type=range]::-moz-range-track {
- -moz-appearance: none;
- background-color: #ffffff;
- height: 2px;
-}
-
-#options input[type="number"] {
- height: 1.3em;
- line-height: 1.2em;
- font-size: .8em;
+ height: 1.5em;
+ border: 0;
+ cursor: pointer;
+ font-size: smaller;
}
#options input[type="text"] {
- border: 0px;
- padding-left: 3px;
- width: 62%;
- height: 1.1em;
- line-height: 1.3em;
- font-size: smaller;
+ border: 0px;
+ width: 62%;
+ font-size: smaller;
}
-#optionsContent output {
- text-align: right;
- font-size: smaller;
+#options output {
+ text-align: right;
+ font-size: smaller;
}
-#optionsContent input[type="number"] {
- border: 0;
- text-align: right;
- background-color: transparent;
- width: 3.3em;
- -moz-appearance: textfield;
+#options input[type="number"] {
+ font-size: 0.8em;
+ border: 0;
+ text-align: right;
+ background-color: transparent;
+ width: 3.3em;
}
-#optionsContent input[type=number]::-webkit-inner-spin-button,
-#optionsContent input[type=number]::-webkit-outer-spin-button {
- -webkit-appearance: none;
- margin: 0;
+#options input[type="number"]::-webkit-inner-spin-button,
+#options input[type="number"]::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
}
-#optionsContent input[type="number"]:hover {
- outline: 1px solid #5d4651;
+#options input[type="number"] {
+ appearance: textfield;
+ -moz-appearance: textfield;
}
-#optionsContent input.paired {
- width: 2.5em;
- margin-left: -.3em;
- text-align: center;
- background-color: white;
+#options input[type="number"]:hover {
+ outline: 1px solid var(--dark-solid);
}
-#optionsContent input.long {
- width: 100%;
+#options input.paired {
+ text-align: center;
+ background-color: white;
+}
+
+#options input.long {
+ width: 100%;
background-color: white;
text-align: left;
- padding-left: 0.4em;
- box-sizing: border-box;
- height: 1.5em;
}
-#optionsContent input[type="range"] {
- width: 100%;
+#options input[type="range"] {
+ width: 100%;
+ height: 8px;
+ background: 0;
+ appearance: none;
+ margin-left: 0;
+ border: 0;
+ padding: 0;
}
-#optionsContent select {
- width: 100%;
-}
-
-#optionsSeedGenerate:before {
- content: '✓';
- margin-left: -2px;
- font-weight: bold;
-}
-
-#layersContent button.presetButton {
- position: absolute;
- height: 2em;
+#options input[type="range"]::-webkit-slider-thumb {
+ -webkit-appearance: none;
border-radius: 15%;
- margin: 1.3em 0 0 .6em;
- font-size: .7em;
+ width: 0.91em;
+ height: 0.91em;
+ background: var(--light-solid);
+ border: 1px solid var(--dark-solid);
+ cursor: pointer;
+ margin-top: -0.4em;
+ box-shadow: 0.5px 0.5px 0px var(--dark-solid);
}
-#styleContent button.styleButton {
- font-size: 70%;
- border-radius: 15%;
- margin: 0;
+#options input[type="range"]::-moz-range-thumb {
+ -moz-appearance: none;
+ border-radius: 15%;
+ width: 0.73em;
+ height: 0.73em;
+ background: var(--light-solid);
+ border: 1px solid var(--dark-solid);
+ cursor: pointer;
+ box-shadow: 0.5px 0.5px 0px var(--dark-solid);
+}
+
+#options input[type="range"]::-webkit-slider-runnable-track {
+ height: 2px;
+ background: #ffffff;
+}
+
+#options input[type="range"]::-moz-range-track {
+ -moz-appearance: none;
+ background-color: #ffffff;
+ height: 2px;
+}
+
+#options select {
+ width: 100%;
+}
+
+#loadGoogleTranslateButton {
+ font-size: smaller;
+ padding: 0.4em 0.5em;
+}
+
+#options input[type="color"] {
+ width: 2em;
+ padding: 1px;
+}
+
+.tabcontent button.sideButton {
+ border-radius: 15%;
+ font-size: 0.8em;
+ margin-block: -1em;
}
#layersContent button.active,
#styleContent button:active {
- transform: translate(0px, 1px);
+ transform: translate(0px, 1px);
}
-#styleElements input[type="range"] {
- width: 64%;
+#styleSelectFont > option {
+ font-size: 2em;
}
-#styleElements select {
- width: 64%;
-}
-
-#styleElements input[type="number"] {
- width: 52px;
- border: 0;
- padding-left: 2.5px;
+#sticked {
+ display: flex;
+ justify-content: space-evenly;
+ width: 100%;
}
#sticked button {
- background-color: #997c8900;
- padding: 0;
- margin-bottom: 2px;
- width: 22%;
- font-size: 1em;
- border: 0;
- font-weight: bold;
+ background-color: transparent;
+ font-weight: bold;
+ border: 0;
}
#sticked button:hover {
- color: white;
+ color: white;
+}
+
+#exitCustomization {
+ right: 10px;
+ bottom: 10px;
+ position: absolute;
+ display: none;
+}
+
+#exitCustomization > div {
+ width: 12em;
+ background: var(--dark-solid);
+ cursor: move;
+}
+
+#finalizeHeightmap {
+ width: 100%;
+ border: none;
+ padding: 0.45em 0.75em;
+ margin: 0.4em 0;
+ white-space: nowrap;
+ font-family: var(--monospace);
+ animation: glowing 2s infinite;
}
.glow {
- animation: glowing 2s infinite;
+ animation: glowing 3s infinite ease-in-out;
}
@keyframes glowing {
- 0% {box-shadow: 0 0 -4px #ded2d8;}
- 50% {box-shadow: 0 0 8px #F44336;}
- 100% {box-shadow: 0 0 -4px #ded2d8;}
-}
-
-.tab > button.options {
- /* width: 23.25%; */
- width: 18.6%;
- height: 100%;
- padding: 7px 0px;
-}
-
-button.options {
- background-color: #997b89;
- font-weight: bold;
- float: left;
- border: none;
- padding: 8px 10px;
- transition: 0.2s;
-}
-
-button.options:hover {
- background-color: #806070 !important;
- color: white !important;
-}
-
-button.active {
- background-color: #916e7f;
- color: white;
+ 0% {
+ box-shadow: 0 0 1px #f44336;
+ }
+ 50% {
+ box-shadow: 0 0 10px #f44336;
+ }
+ 100% {
+ box-shadow: 0 0 1px #f44336;
+ }
}
.tabcontent {
- display: none;
- padding: 0 12px 2px 12px;
- opacity: 0.9;
+ display: none;
+ padding: 0 12px 2px 12px;
+ opacity: 0.9;
}
.tabcontent button {
- background-color: #916e7f;
- border: none;
- padding: .45em .75em;
- margin: .35em 0;
- transition: 0.1s;
- font-size: 1em;
+ background-color: var(--bg-lighter);
+ border: none;
+ padding: 0.45em 0.75em;
+ margin: 0.35em 0;
+ transition: 0.1s;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.tabcontent button.pressed {
+ background-color: var(--header);
+ font-style: italic;
}
.tabcontent button:hover {
- background-color: #a8879d !important;
+ background-color: var(--header-active);
+}
+
+#toolsContent > .grid {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ margin: 0.2em 0;
+}
+
+#toolsContent button {
+ padding: 0.35em 0;
+ margin: 0.16em 0.12em;
}
#mapLayers {
- display: inline-block;
- padding: 0;
- margin: 0;
+ display: inline-block;
+ padding: 0;
+ margin: 0;
}
#mapFilters > button {
- width: 23%;
- padding: 4px 0;
+ width: 23%;
+ padding: 4px 0;
}
#viewMode > button {
- padding: .35em;
- margin: .2em .3em .6em .3em;
- float: left;
- width: 30.7%;
+ padding: 0.35em;
+ margin: 0.3em 0.3em 0.6em 0.3em;
+ float: left;
+ width: 30.7%;
}
fieldset {
- border: 1px solid #5d4651;
+ border: 1px solid var(--dark-solid);
}
.tabcontent li {
- list-style-type: none;
- background-color: #997b89;
- cursor: pointer;
- padding: .35em;
- margin: .2em .3em;
- float: left;
- width: 28%;
- text-align: center;
+ list-style-type: none;
+ background-color: var(--bg-main);
+ cursor: pointer;
+ padding: 0.35em;
+ margin: 0.2em 0.3em;
+ float: left;
+ width: 28%;
+ text-align: center;
+ text-transform: capitalize;
+
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
}
-#options .buttonoff {
- background-color: #b6b4b440 !important;
- color: grey;
+.tabcontent li.buttonoff {
+ background-color: var(--bg-disabled);
+ color: #444444aa;
+}
+
+.tabcontent li:hover {
+ box-shadow: 0 0 2px 2px var(--dark-solid) 17;
}
-.tabcontent li:hover,
.tabcontent button:hover {
- box-shadow: 0 0 2px 2px #5d465117;
+ background-color: var(--header);
}
#optionsContainer span {
- cursor: default;
+ cursor: default;
}
#cellInfo {
- user-select: text;
+ user-select: text;
}
#tooltip {
- position: fixed;
- text-align: center;
- bottom: 0.5vw;
- width: 70%;
- left: 15%;
- cursor: default;
- text-shadow: 1px 1px 2px #1d0e0f;
- color: #ffffff;
- font-size: calc(12px + 0.5vw);
- white-space: pre-line;
- z-index: 99999;
- background: linear-gradient(0.1turn, #ffffff00, #c71d1d66, #ffffff00);
+ position: fixed;
+ text-align: center;
+ bottom: 0.5vw;
+ width: 70%;
+ left: 15%;
+ cursor: default;
+ text-shadow: 1px 1px 2px #1d0e0f;
+ color: #ffffff;
+ font-size: calc(12px + 0.5vw);
+ white-space: pre-line;
+ z-index: 99999;
+ background: linear-gradient(0.1turn, #ffffff00, #c71d1d66, #ffffff00);
}
#optionsContent table {
- border-spacing: 0;
- line-height: 1.2em;
+ border-spacing: 0;
+ line-height: 1.2em;
}
#optionsContent table td:nth-of-type(1) {
- width: 3%;
+ width: 3%;
}
#optionsContent table td:nth-of-type(2) {
- width: 40%;
+ width: 40%;
}
#optionsContent table td:nth-of-type(4) {
- text-align: right;
- width: 6%;
+ text-align: right;
+ width: 6%;
+}
+
+.emblemShapePreview {
+ width: 1.5em;
+ height: 1.5em;
+ margin: -0.4em 0.1em;
+ fill: #fff;
+ stroke: #000;
+ stroke-width: 5px;
}
#styleContent table {
- border-spacing: 0;
- margin-left: .2em;
- width: 100%;
+ border-spacing: 0;
+ margin-left: 0.2em;
+ width: 100%;
}
#styleContent table tr {
- width: 100%;
- display: table;
+ width: 100%;
+ display: table;
}
#styleContent table td:nth-of-type(1) {
- width: 34.2%;
+ width: 34.2%;
}
-#styleElements tbody, #styleElements caption {
- display: none;
+#styleElements tbody,
+#styleElements caption {
+ display: none;
}
#styleIsOff {
- color: darkred;
- font-weight: 700;
- text-align: left;
+ color: darkred;
+ font-weight: 700;
+ text-align: left;
}
#styleElements .whiteButton {
- padding: 0 .8em;
- border: 0;
- background-color: #ffffff !important;
+ padding: 0 0.8em;
+ border: 0;
+ background-color: #ffffff !important;
}
.overflow-table {
- width: 100%;
- text-align: center;
+ width: 100%;
+ text-align: center;
}
.matrix-table {
- width: 100%;
- font-size: smaller;
- text-align: center;
- border-collapse: collapse;
+ max-height: 80vh;
+ max-width: 85vw;
+ scrollbar-width: thin;
+ overflow: auto;
}
-table.matrix-table th, table.matrix-table td {
- border: 1px solid #5d4651;
- height: 2em;
- padding: .2em;
- position: relative;
+.matrix-table > table {
+ text-align: center;
+ border-collapse: collapse;
+ font-size: smaller;
}
-table.matrix-table th {
- background-color: #302a2a;
- color: #ffffff;
+.matrix-table > table th,
+.matrix-table > table td {
+ border: 1px solid var(--dark-solid);
+ height: 2em;
+ padding: 0.2em;
+ position: relative;
}
-table.matrix-table tr:hover th {
- background: #3e3636;
+.matrix-table > table th {
+ background-color: #302a2a;
+ color: #ffffff;
}
-table.matrix-table td:hover {
- outline: 2px solid #5d4651;
- outline-offset: -1px;
- z-index: 1;
+.matrix-table > table td:hover {
+ outline: 2px solid var(--dark-solid);
+ outline-offset: -1px;
+ z-index: 1;
+ cursor: pointer;
}
-table.matrix-table td.Ally {
- background-color: #73ec73;
- color: #000000;
+.matrix-table > table td.Ally {
+ background-color: #73ec73;
+ color: #000000;
}
-table.matrix-table td.Friendly {
- background-color:#d4f8aa;
+.matrix-table > table td.Friendly {
+ background-color: #d4f8aa;
}
-table.matrix-table td.Neutral {
- background-color:#d8d9d3;
+.matrix-table > table td.Neutral {
+ background-color: #d8d9d3;
}
-table.matrix-table td.Suspicion {
- background-color:#f3c7c4;
+.matrix-table > table td.Suspicion {
+ background-color: #eeafaa;
}
-table.matrix-table td.Enemy {
- background-color:#ffa39c;
- color: #af0d23;
+.matrix-table > table td.Enemy {
+ background-color: #ffa39c;
+ color: #af0d23;
}
-table.matrix-table td.Unknown {
- background-color:#c1bfbf;
+.matrix-table > table td.Unknown {
+ background-color: #c1bfbf;
}
-table.matrix-table td.Rival {
- background-color:#bd845c;
+.matrix-table > table td.Rival {
+ background-color: #bd845c;
}
-table.matrix-table td.Vassal {
- background-color:#87CEFA;
+.matrix-table > table td.Vassal {
+ background-color: #87cefa;
}
-table.matrix-table td.Suzerain {
- background-color:#8f8fe1;
+.matrix-table > table td.Suzerain {
+ background-color: #8f8fe1;
}
-table.matrix-table td.x {
- background-color:#d4ca94;
+.matrix-table > table td.x {
+ background-color: #d4ca94;
+ cursor: initial;
}
#sizeOutput {
- color: green;
+ color: green;
}
.setColors {
- display: inline-block;
+ display: inline-block;
}
-body button.noicon {
- width: 1.8em;
+#templateTools > button {
+ width: 1.8em;
height: 1.6em;
margin: 1px;
- padding: .1em .5em;
+ padding: 0.1em 0.5em;
float: left;
font-size: 1.2em;
- font-family: Copperplate, monospace;
+ font-family: var(--monospace);
}
#brushesButtons > button {
- padding: 0;
+ padding: 0.3em;
}
#brushesButtons svg {
- pointer-events: none;
+ pointer-events: none;
}
#brushesPanel > div {
- margin: 2px 0;
+ margin: 2px 0;
}
#templateEditor > div {
- margin: 1px 0;
+ margin: 1px 0;
}
#templateEditor #templateTools {
- display: inline-block;
- margin-bottom: -.3em;
+ display: inline-block;
+ margin-bottom: -0.3em;
}
#templateBody > div {
@@ -815,569 +990,660 @@ body button.noicon {
border-radius: 1px;
background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%);
margin: 1px 1px;
- padding: .1em .2em;
+ padding: 0.1em 0.2em;
height: 1.2em;
}
#templateBody > div:hover {
- border-color: #808080;
- background-image: linear-gradient(to right, #fcfcfc 0%, #ededed 51%, #dedede 100%);
+ border-color: #808080;
+ background-image: linear-gradient(to right, #fcfcfc 0%, #ededed 51%, #dedede 100%);
}
#templateBody > div > div {
- display: inline-block;
+ display: inline-block;
}
#templateBody > div > span {
- float: right;
- margin: 0 1px 0 .5px;
+ float: right;
+ margin-inline: 1px;
}
#templateBody > div > i {
- float: right;
+ float: right;
}
#templateBody input,
#templateBody select {
- width: 4em;
- height: 1em;
- border: 0;
- font-size: .95em;
- background-color: #ffffff95;
- color: #05044d;
- font-style: italic;
- font-family: monospace;
+ width: 4.5em;
+ height: 1em;
+ border: 0;
+ background-color: #ffffff95;
+ color: #05044d;
+ font-style: italic;
+ font-family: var(--monospace);
}
#templateBody select {
- width: 8em;
- height: 1.4em;
- cursor: pointer;
- font-size: .9em;
+ width: 8em;
+ height: 1.4em;
+ cursor: pointer;
+ font-size: 0.9em;
}
#templateBody .icon-resize-vertical {
- cursor: row-resize;
- font-size: .9em;
- color: #555555;
- margin: 1px 1px;
+ cursor: row-resize;
+ font-size: 0.9em;
+ color: #555555;
+ margin: 1px 1px;
}
#templateBody .icon-check-empty,
#templateBody .icon-check {
- width: 1.1em;
- cursor: pointer;
- color: #575957;
- font-size: .9em;
+ width: 1.1em;
+ cursor: pointer;
+ color: #575957;
+ font-size: 0.9em;
}
#controlPoints {
- fill: #ff0000;
- stroke: #841f1f;
- stroke-width: .25;
- cursor: move;
- opacity: .8;
+ fill: #ff0000;
+ stroke: #841f1f;
+ stroke-width: 0.25;
+ cursor: move;
+ opacity: 0.8;
}
#controlPoints > path {
- fill: none;
- stroke: #000000;
- stroke-width: 2;
- opacity: .4;
- cursor: pointer;
+ fill: none;
+ stroke: #0a0909;
+ stroke-width: 2;
+ opacity: 0.4;
+ cursor: pointer;
+}
+
+#controlCells {
+ pointer-events: none;
+ fill: #82c8ff80;
+ stroke: none;
}
#vertices > circle {
- fill: #ff0000;
- stroke: #841f1f;
- stroke-width: .1;
- cursor: move;
- opacity: .8;
+ fill: #ff0000;
+ stroke: #841f1f;
+ stroke-width: 0.1;
+ cursor: move;
+ opacity: 0.8;
}
#vertices > polygon {
- fill: none;
- stroke: #808080;
- stroke-width: .1;
+ fill: none;
+ stroke: #808080;
+ stroke-width: 0.1;
}
#controlPoints > circle:hover,
-#vertices> circle:hover {
- stroke: #2c0808;
+#vertices > circle:hover {
+ stroke: #2c0808;
+}
+
+#battleBody > table {
+ padding: 0.2em 0.6em 0.2em 0.6em;
+ border: 1px solid #ccc;
+ margin: 0.2em 0 0.4em 0;
+ display: block;
+ overflow: auto;
+ max-height: 34vh;
+ width: 100%;
+}
+
+#battleBody > table .regiment {
+ width: 13em;
+ font-weight: bold;
+}
+
+tr.battleCasualties,
+tr.battleSurvivors {
+ font-style: italic;
+ font-size: 0.9em;
+}
+
+#battleBottom div.battleTypes {
+ position: fixed;
+ background-color: #ffffff30;
+}
+
+#battleBody div.battlePhases {
+ position: absolute;
+ background-color: #ffffff30;
+}
+
+#battleBody div.battlePhases > button,
+#battleBottom div.battleTypes > button {
+ width: 3.2em;
+ display: block;
+ margin: 0.2em 0;
+}
+
+div#regimentSelectorBody {
+ max-height: 50vh;
+ font-size: 0.9em;
+}
+
+div#regimentSelectorBody > div {
+ padding: 0.1em;
+ border: 1px solid #fff;
+}
+
+div#regimentSelectorBody > div:hover {
+ border: 1px solid #ccc;
+}
+
+div#regimentSelectorBody > div.selected {
+ border: 1px solid #b28585;
+}
+
+div#regimentSelectorBody > div.inactive {
+ background-color: #eee;
+ color: #aaa;
+}
+
+div#regimentSelectorBody > div > div {
+ display: inline-block;
+ pointer-events: none;
}
.drag-trigger {
- border-left: 12px solid transparent;
- border-right: 12px solid #916e7f;
- border-top: 12px solid transparent;
- position: absolute;
- right: 0;
- top: 100%;
- margin-top: -12px;
+ border-left: 1em solid transparent;
+ border-right: 1em solid #000;
+ border-top: 1em solid transparent;
+ position: absolute;
+ right: -1px;
+ bottom: -1px;
+ opacity: 0.3;
}
.drag-trigger:hover {
- cursor: move;
- border-right-color: #5e4fa2;
+ cursor: move;
+ opacity: 0.6;
}
.tint {
- filter: sepia(1) hue-rotate(200deg);
+ filter: sepia(1) hue-rotate(200deg);
+}
+
+.colorsContainer {
+ display: grid;
+ grid-template-columns: repeat(5, 1fr);
+ grid-column-gap: 0.3em;
+ grid-row-gap: 0.2em;
}
.color-div {
- width: 2.7em;
- height: 1.1em;
- display: inline-block;
- margin: .1em .2em;
- border: 1px #c5c5c5 groove;
- cursor: pointer;
+ width: 3em;
+ height: 1.5em;
+ border: 1px #999 solid;
+ cursor: pointer;
}
#colorsSelect div {
- height: 1.7em;
- display: inline-block;
- cursor: pointer;
+ height: 1.7em;
+ display: inline-block;
+ cursor: pointer;
}
.color-div:hover {
- border-color: red;
+ border-color: red;
}
.hoveredColor {
- box-shadow: 0 0 1px 1px #717171;
+ box-shadow: 0 0 1px 1px #717171;
}
.selectedColor {
- outline: 2px solid #f87b66;
+ outline: 2px solid #f87b66;
}
#colorScheme {
- margin: 6px 1px 4px 1px;
+ margin: 6px 1px 4px 1px;
}
-#colorsSelectValue {
- font-size: larger;
- position: relative;
- font-family: monospace;
- font-weight: bold;
- top: -3px;
+#debug path.selected {
+ stroke-width: 0.8;
+ stroke: #da3126;
+ fill: none;
+}
+
+#debug > text {
+ font-size: 2px;
+ text-anchor: middle;
+ dominant-baseline: central;
}
.selectedCell {
- stroke-width: 1;
- stroke: #da3126;
+ stroke-width: 1;
+ stroke: #da3126;
}
i.resetButton {
- float: left;
- padding-right: .4em;
- font-size: .8em;
- margin-top: .25em;
- color: #ffffff;
- cursor: pointer;
+ float: left;
+ padding-right: 0.4em;
+ font-size: 0.8em;
+ margin-top: 0.25em;
+ color: #ffffff;
+ cursor: pointer;
}
i.resetButton:active {
- color: #5d4651;
+ color: var(--dark-solid);
}
.ui-dialog button.pressed {
- box-shadow: inset 1px 1px 0 0 #ccc;
- border-color: #a6a6da;
- background-color: #ecd8d8;
+ box-shadow: inset 1px 1px 0 0 #ccc;
+ border-color: #a6a6da;
+ background-color: #ecd8d8;
+ border-radius: 10%;
}
.ui-dialog input[type="range"] {
- height: 2px;
- background: #d4d4d4;
- top: -.35em;
- position: relative;
- appearance: none;
- -webkit-appearance: none;
+ padding: 0;
+ height: 2px;
+ background: #d4d4d4;
+ position: relative;
+ appearance: none;
+ -webkit-appearance: none;
}
.ui-dialog input[type="range"]::-webkit-slider-thumb {
- -webkit-appearance: none;
- border-radius: 15%;
+ -webkit-appearance: none;
+ border-radius: 15%;
width: 1em;
height: 1em;
- background: #e9e9e9;
- border: 1px solid #9b9b9b;
- cursor: pointer;
+ background: #e9e9e9;
+ border: 1px solid #9b9b9b;
+ cursor: pointer;
}
.ui-dialog input[type="range"]::-moz-range-thumb {
- appearance: none;
- border-radius: 15%;
+ appearance: none;
+ border-radius: 15%;
width: 1em;
height: 1em;
- background: #e9e9e9;
- border: 1px solid #9b9b9b;
- cursor: pointer;
+ background: #e9e9e9;
+ border: 1px solid #9b9b9b;
+ cursor: pointer;
}
.ui-dialog input[type="number"] {
- width: 2.5em;
- height: 1.1em;
+ width: 4.5em;
}
.ui-dialog .disabled {
- opacity: 0.2;
-}
-
-.ui-dialog .disabled::slider-thumb {
- opacity: 0.2;
-}
-
-.ui-dialog .disabled::-moz-range-thumb {
- opacity: 0.2;
+ opacity: 0.2;
}
.ui-dialog:disabled {
- cursor: default;
+ cursor: default;
}
div.slider {
- width: 40em;
- margin-top: 0.2em;
+ width: 40em;
+ margin-top: 0.2em;
}
div.slider .ui-slider-handle {
- width: 3em;
- height: 1.6em;
- top: 50%;
- margin-top: -.8em;
- text-align: center;
- line-height: 1.6em;
+ width: 3em;
+ height: 1.6em;
+ top: 50%;
+ margin-top: -0.8em;
+ text-align: center;
+ line-height: 1.6em;
}
#saveDropdown {
- display: none;
- position: absolute;
- left: 29%;
- top: 100%;
- border: 1px solid #5e4fa2;
- background-color: #a4879b;
- width: 5em;
+ display: none;
+ position: absolute;
+ left: 29%;
+ top: 100%;
+ border: 1px solid #5e4fa2;
+ background-color: #a4879b;
+ width: 5em;
}
#loadDropdown {
- display: none;
- position: absolute;
- left: 53%;
- top: 100%;
- border: 1px solid #5e4fa2;
- background-color: #a4879b;
- width: 9em;
+ display: none;
+ position: absolute;
+ left: 53%;
+ top: 100%;
+ border: 1px solid #5e4fa2;
+ background-color: #a4879b;
+ width: 9em;
}
-#loadDropdown>div,
-#saveDropdown>div {
- padding: 2px 4px;
- cursor: pointer;
+#loadDropdown > div,
+#saveDropdown > div {
+ padding: 2px 4px;
+ cursor: pointer;
}
-#loadDropdown>div:hover,
-#saveDropdown>div:hover {
- color: white;
-}
-
-#brushPower,
-#brushRadius {
- width: 8em;
+#loadDropdown > div:hover,
+#saveDropdown > div:hover {
+ color: white;
}
#rescaleHigher,
#rescaleLower,
#rescaleModifier {
- width: 3.7em;
+ width: 3.7em;
}
.italic {
- font-style: italic;
+ font-style: italic;
}
.hidden {
- display: none !important;
-}
-
-.burgs-table {
- max-height: 75vh;
- overflow-x: hidden;
- overflow-y: scroll;
+ display: none !important;
}
.table {
- max-height: 75vh;
- overflow-x: hidden;
- overflow-y: auto;
+ max-height: 75vh;
+ max-width: 75vw;
+ overflow-x: hidden;
+ overflow-y: auto;
+ scrollbar-width: thin;
}
-div.header > div {
- font-weight: bold;
- font-size: .9em;
- display: inline-block;
- position: sticky;
+@media screen and (max-width: 600px) {
+ .table {
+ max-width: unset;
+ }
+}
+
+.dialog::-webkit-scrollbar,
+#alertMessage::-webkit-scrollbar,
+.table::-webkit-scrollbar,
+.matrix-table::-webkit-scrollbar {
+ width: 6px;
+ height: 6px;
+ background-color: transparent;
+}
+
+.dialog::-webkit-scrollbar-thumb,
+#alertMessage::-webkit-scrollbar-thumb,
+.table::-webkit-scrollbar-thumb,
+.matrix-table::-webkit-scrollbar-thumb {
+ background-color: #aaa;
+ border-radius: 6px;
+}
+
+.dialog::-webkit-scrollbar-thumb:hover,
+#alertMessage::-webkit-scrollbar-thumb:hover,
+.table::-webkit-scrollbar-thumb:hover,
+.matrix-table::-webkit-scrollbar-thumb:hover {
+ background: #666;
+}
+
+.dialog {
+ max-width: 93vw;
+}
+
+.dialog > div {
+ width: max-content;
+}
+
+div.header {
+ display: grid;
+ width: 0;
+ font-weight: bold;
+ font-size: 0.9em;
+}
+
+div.header > div:first-child {
+ margin-left: 1.8em;
}
.sortable {
- cursor: pointer;
+ cursor: pointer;
}
.totalLine {
- color: #666666;
- font-style: italic;
- font-size: .9em;
- margin-bottom: 3px;
+ color: #666666;
+ font-style: italic;
+ font-size: 0.9em;
+ margin-bottom: 3px;
}
-.totalLine>div {
- display: inline-block;
+.totalLine > div {
+ display: inline-block;
}
div.states {
- border: 1px solid #d4d4d4;
- background-image: linear-gradient(to right, #fafafa80 0%, #f0f0f080 50%, #c8c8c880 100%);
- margin: .1em 0;
- padding: 0 .2em;
- font-size: .9em;
- line-height: 1.5em;
+ border: 1px solid #d4d4d4;
+ background-image: linear-gradient(to right, #fafafa80 0%, #f0f0f080 50%, #c8c8c880 100%);
+ margin: 0.1em 0;
+ padding: 0 0.2em;
+ font-size: 0.9em;
+ line-height: 1.5em;
}
-div.states:hover {
- border: 1px solid #c4c4c4;
- background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 50%, #fcfcfc 0%);
+div.states:hover,
+div.states.hovered {
+ border: 1px solid #c4c4c4;
+ background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 50%, #fcfcfc 0%);
}
div.states > *,
-div.states sup {
- display: inline-block;
+div.states sup,
+div.totalLine > div {
+ display: inline-block;
}
-div.states>input {
- width: 6em;
- background: none;
- border: 0;
-}
-
-div.states>input.stateColor {
- width: .9em;
- height: .9em;
- padding: 0px;
- margin-right: -1px;
+div.states > input {
+ width: 7em;
+ background: none;
+ border: 0;
}
div.states div {
- width: 3.2em;
-}
-
-div.states .statePower {
- width: 3.2em;
- line-height: 1.4em;
- -moz-appearance: textfield;
+ width: 3.2em;
}
div.states .biomeHabitability {
- width: 3.6em;
- line-height: 1.4em;
- -moz-appearance: textfield;
+ width: 4em;
+ -moz-appearance: textfield;
}
-div.states .stateBurgs {
- width: 2.4em;
+div.states > .statePopulation {
+ width: 3em;
}
-div.states>.stateArea {
- width: 5em;
-}
-
-div.states>.statePopulation {
- width: 3em;
+div.states:hover > .hiddenIcon {
+ visibility: visible !important;
}
div.states .icon-pencil,
div.states .icon-trash-empty,
div.states .icon-eye,
-div.states .icon-pin {
- cursor: pointer;
-}
-
-div.states .icon-flag-empty {
- cursor: pointer;
- font-size: .9em;
+div.states .icon-pin,
+div.states .icon-flag-empty,
+div.states .icon-cw,
+div.states .icon-lock,
+div.states .icon-lock-open {
+ cursor: pointer;
}
div.states .icon-resize-vertical {
- cursor: row-resize;
- font-size: .9em;
+ cursor: row-resize;
+ font-size: 0.9em;
}
-div.states>[class^="icon-"] {
- color: #6e5e66;
- padding: 0;
+div.states > [class^="icon-"] {
+ color: #6e5e66;
+ padding: 0;
}
div.states > .icon-arrows-cw {
- color: #67575c;
- font-size: .9em;
- cursor: pointer;
+ color: #67575c;
+ font-size: 0.9em;
+ cursor: pointer;
}
-div.states>.before {
- color: #6e5e66;
- padding: 0 1px 0 0;
+div.states > .before {
+ color: #6e5e66;
+ padding: 0 1px 0 0;
}
-div.states>.small {
- font-size: .9em;
+div.states > .small {
+ font-size: 0.9em;
}
-div.states>.cultureName {
- width: 5em;
-}
-
-div.states>.culturePopulation {
- width: 4em;
- cursor: pointer;
-}
-
-div.states > .cultureBase,
-div.states > .cultureType,
-div.states > .stateCulture,
-div.states > .diplomacyRelations {
- width: 4.6em;
- cursor: pointer;
- border: 0;
- background-color: transparent;
- -webkit-appearance: textfield;
- -moz-appearance: none;
- appearance: textfield;
-}
-
-div.states > .cultureBase {
- width: 6em;
+div.states > select {
+ width: 7em;
+ cursor: pointer;
+ border: 0;
+ background-color: transparent;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
}
div.states > .burgName,
div.states > .burgState,
div.states > .burgCulture {
- width: 6em;
-}
-
-div.states .burgPopulation {
- width: 4.8em;
-}
-
-div.states .burgType {
- width: 3em;
-}
-
-div.states .burgType > span {
- padding: 0 1px;
- color: #6e5e66;
- transition: 0.2s;
+ width: 6em;
}
div.states span.inactive {
- color: #c6c2c2;
+ color: #c6c2c2;
}
div.states span.inactive:hover {
- color: #abaaaa;
+ color: #abaaaa;
}
-div.states>input.riverType {
- width: 5em;
+div.states > .riverName {
+ width: 7em;
+}
+
+div.states > .riverType {
+ width: 5em;
+}
+
+.coaIcon {
+ stroke-width: 3;
+ width: 1.4em;
+ height: 1.4em;
+ margin: -0.3em 0;
+}
+
+.coaIcon > use {
+ pointer-events: none;
}
#diplomacyBodySection > div {
- cursor: pointer;
+ cursor: pointer;
+}
+
+.changeRelations > * {
+ pointer-events: none;
+ cursor: pointer;
}
#diplomacySelect {
- position: absolute;
- background-color: #ffffff;
- border: 1px solid #1891ff;
- width: 23%;
- left: 70.5%;
+ width: 5em;
+ margin: 0.1em 0 0 -0.3em;
+ position: fixed;
+ background-color: #ffffff;
+ border: 1px solid #1891ff;
}
#diplomacySelect > div {
- width: 100%;
+ width: 100%;
+ padding-left: 0.3em;
}
#diplomacySelect > div:hover {
- background-color: #1891ff;
- color: #ffffff;
+ background-color: #1891ff;
+ color: #ffffff;
+ width: calc(100% - 0.3em);
}
#burgsFooterPopulation {
- border: 0;
- width: 50px;
- color: #666666;
- font-style: italic;
- line-height: 1.4em;
+ border: 0;
+ width: 50px;
+ color: #666666;
+ font-style: italic;
+ line-height: 1.4em;
}
-#stateNameEditor input,
-#provinceNameEditor input {
- padding-left: .3em;
+#burgBody div.label {
+ display: inline-block;
+ width: 6em;
+}
+
+#burgBody > div > div,
+#riverBody > div,
+#routeBody > div,
+#lakeBody > div {
+ padding: 0.1em;
+}
+
+#riverBody div.label,
+#riverBody input,
+#riverBody select,
+#routeBody div.label,
+#lakeBody div.label,
+#lakeBody input,
+#lakeBody select {
+ display: inline-block;
+ width: 7em;
+}
+
+#routeBody input,
+#routeBody select {
+ display: inline-block;
+ width: 10em;
}
#stateNameEditor div.label,
#provinceNameEditor div.label,
-#burgBody div.label {
- display: inline-block;
+#regimentBody div.label,
+#markerEditor div.label {
+ display: inline-block;
width: 5.5em;
+ padding: 0.3em 0;
+}
+
+#exportToPngTilesScreen div.label {
+ display: inline-block;
+ width: 5em;
+}
+
+#regimentBody input[type="number"] {
+ width: 5em;
}
.burgFeature {
- font-size: 1.2em;
- padding: 1px 2px;
- color: #555;
- cursor: pointer;
+ padding: 1px;
+ cursor: pointer;
}
.burgFeature.inactive {
- color: #ddd;
+ color: #ddd;
}
.burgFeature.inactive:hover {
color: #abaaaa;
}
-div.states>.religionName {
- width: 11em;
-}
-
-div.states>.religionType {
- width: 5em;
- cursor: pointer;
- border: 0;
- background-color: transparent;
- -webkit-appearance: textfield;
- -moz-appearance: none;
- appearance: textfield;
-}
-
-div.states>.religionForm {
- width: 6em;
-}
-
-div.states>.religionDeity {
- width: 15em;
-}
-
.placeholder {
- opacity: 0;
- cursor: default;
- pointer-events: none;
+ opacity: 0;
+ cursor: default;
+ pointer-events: none;
}
div.states.selected {
- border-color: #b28585;
- background-image: linear-gradient(to right, #f2f2f2 0%, #ebe7e7 50%, #E5DADB 100%);
+ border-color: #b28585;
+ background-image: linear-gradient(to right, #f2f2f2 0%, #ebe7e7 50%, #e5dadb 100%);
}
div.states.active {
@@ -1386,636 +1652,772 @@ div.states.active {
}
div.states.Self {
- border-color: #858b8e;
- background-image: linear-gradient(to right, #f2f2f2 0%, #b0c6d9 100%);
- font-style: italic;
- margin-bottom: .2em;
- cursor: default !important;
+ margin-bottom: 0.2em;
+ cursor: default !important;
+ padding: 0.2em 0 0 0.5em;
+ font-weight: bold;
}
div.states button.selectCapital {
- margin: -1px 21px 0 7px;
- padding: 0px 3px;
+ margin: -1px 21px 0 7px;
+ padding: 0px 3px;
}
div.states > input.biomeName {
- width: 12em;
+ width: 12em;
}
div.states > div.biomeArea {
- width: 5em;
+ width: 5em;
}
-.zoneFill {
- stroke: #666666;
- stroke-width: 2;
- cursor: pointer;
+#militaryBody div.states > input {
+ -moz-appearance: textfield;
+}
+
+#militaryBody div.states > input,
+#militaryBody div.states > div,
+#regimentsBody div.states > div {
+ width: 5em;
+}
+
+#emblemBody > div {
+ padding: 1px 3px;
+ transition: all 0.3s ease-out;
+}
+
+#emblemBody > div.active {
+ background-color: #54ca7728;
+}
+
+#emblemArmiger {
+ text-align: center;
+ display: block;
+}
+
+#emblemBody .label {
+ width: 6em;
+ display: inline-block;
+}
+
+#emblemBody select {
+ width: 9em;
+}
+
+#emblemsBottom {
+ margin-top: 4px;
+ text-align: center;
+}
+
+#emblemUploadControl,
+#emblemDownloadControl {
+ margin-top: 0.3em;
+ width: 100%;
+}
+
+div.editorLine {
+ margin: 0.2em 0;
+ padding: 0 0.2em;
+ font-size: 0.9em;
+}
+
+#emblemDownloadControl > input {
+ width: 4.1em;
}
#picker text {
- cursor: default;
+ cursor: default;
}
#pickerHeader {
- fill: #916e7f;
- stroke: #5d4651;
- cursor: move;
+ fill: var(--header);
+ stroke: var(--dark-solid);
+ cursor: move;
}
#pickerLabel {
- fill: #f8ffff;
- font-size: 12px;
- font-weight: bold;
- font-family: Arial, Helvetica, sans-serif;
- cursor: move !important;
+ fill: #f8ffff;
+ font-size: 12px;
+ font-weight: bold;
+ font-family: var(--sans-serif);
+ cursor: move !important;
}
#pickerCloseRect {
- cursor: pointer;
- fill: #916e7f;
- stroke: #f8ffff;
+ cursor: pointer;
+ fill: var(--header);
+ stroke: #f8ffff;
}
#pickerCloseText {
- fill: #f8ffff;
- font-size: 10px;
- font-family: Arial, Helvetica, sans-serif;
- pointer-events: none;
+ fill: #f8ffff;
+ font-size: 10px;
+ font-family: var(--sans-serif);
+ pointer-events: none;
}
#pickerControls line {
- stroke: #999999;
- stroke-width: 2;
+ stroke: #999999;
+ stroke-width: 2;
}
#pickerControls circle {
- fill: #ffeb3b;
- stroke: #666666;
- cursor: ew-resize;
+ fill: #ffeb3b;
+ stroke: #666666;
+ cursor: ew-resize;
}
#pickerControls circle:hover {
- fill: #eca116;
- stroke: #000000;
+ fill: #eca116;
+ stroke: #000000;
}
#pickerControls,
#pickerSpaces {
- font-size: 11px;
+ font-size: 11px;
}
#pickerSpaces input {
- height: 8px;
- width: 16px;
- text-align: center;
- font-size: 9px;
- -moz-appearance: textfield;
+ width: 22px;
+ font-size: 9px;
+ -moz-appearance: textfield;
}
#pickerSpaces input::-webkit-inner-spin-button,
#pickerSpaces input::-webkit-outer-spin-button {
- -webkit-appearance: none;
- margin: 0;
+ -webkit-appearance: none;
+ margin: 0;
}
-#pickerColors rect, #pickerHatches rect {
- cursor: pointer;
+#pickerColors rect,
+#pickerHatches rect {
+ cursor: pointer;
}
#picker rect.selected {
- outline: 2px dashed #b90c0c;
- stroke-width: 0;
+ outline: 2px dashed #b90c0c;
+ stroke-width: 0;
}
.hoverButton {
- position: sticky;
- margin-left: -1.8em;
- margin-top: 1px;
- background-color: #dedede;
- font-size: 8px;
- cursor: pointer;
- padding: 0px 3px !important;
-}
-
-#unitsBody>div>* {
- display: inline-block;
+ position: sticky;
+ margin-left: -1.8em;
+ margin-top: 1px;
+ background-color: #dedede;
+ font-size: 8px;
+ cursor: pointer;
+ padding: 0px 3px !important;
}
.unitsHeader {
- margin: .8em 0 0 -1.1em;
- font-weight: bold;
- font-style: italic;
+ margin: 0.8em 0 0 -1.1em;
+ font-weight: bold;
+ font-style: italic;
}
-#unitsBottom, #reliefBottom {
- margin: 6px 0 0 6px;
+#unitsBottom,
+#reliefBottom {
+ margin: 6px 0 0 6px;
}
-#unitsBody>div>div {
- width: 9em;
+#unitsBody label {
+ display: inline-block;
+ width: 9em;
}
-#unitsBody>div>input[type="range"] {
- width: 7em;
+#unitsBody > div > select,
+#unitsBody > div > input[type="text"] {
+ width: 14.4em;
+ border: 1px solid #e9e9e9;
}
-#unitsBody>div>input[type="text"] {
- width: 11.2em;
-}
-
-#unitsBody>div>select {
- width: 11.32em;
-}
-
-
-#unitsBody>div>input[type="number"] {
- width: 3.4em;
-}
-
-#unitsBody>div>input,
-#unitsBody>div>select {
- border: 1px solid #e9e9e9;
+#unitsBody input[type="range"] {
+ width: 9em;
}
#unitsEditor i.icon-lock-open,
#unitsEditor i.icon-lock {
- color: #626573;
- font-size: .8em;
- cursor: pointer;
- position: fixed;
- margin: .4em 0 0 -.9em;
-}
-
-#barBackColor {
- width: 3.45em;
- padding: 0px;
+ color: #626573;
+ font-size: 0.8em;
+ cursor: pointer;
+ position: fixed;
+ margin: 0.4em 0 0 -0.9em;
}
#ruler {
- cursor: move;
- fill: none;
+ cursor: move;
+ fill: none;
}
-#ruler circle {
- stroke: #4e5a69;
- fill: yellow;
- cursor: grab;
+#ruler .rulerPoints {
+ stroke: #4e5a69;
+ fill: yellow;
+ cursor: grab;
}
-#ruler rect {
- stroke: #3d3d3d;
- fill: yellow;
- cursor: col-resize;
+#ruler .rulerPoints .control {
+ fill: #999999;
}
#ruler .white {
- stroke: white;
+ stroke: white;
}
#ruler .gray {
- stroke: #3d3d3d;
+ stroke: #3d3d3d;
+ pointer-events: none;
}
#ruler text {
- font-family: 'Times New Roman';
- fill: #3d3d3d;
- stroke: none;
- text-anchor: middle;
- text-shadow: 0 0 4px white;
- cursor: pointer;
+ font-family: var(--serif);
+ fill: #3d3d3d;
+ text-anchor: middle;
+ text-shadow: 0 0 4px white;
+ cursor: pointer;
}
-#ruler .planimeter {
- fill: lightblue;
- fill-rule: evenodd;
- fill-opacity: 0.5;
- stroke: #737373;
+#ruler path.planimeter {
+ fill: lightblue;
+ fill-rule: evenodd;
+ fill-opacity: 0.5;
+ stroke: #737373;
}
-#scaleBar {
- stroke: none;
- fill: none;
- cursor: pointer;
+#militaryOptionsTable select {
+ border: 1px solid #d4d4d4;
}
-#scaleBar text {
- fill: #353540;
- text-anchor: middle;
- font-family: Georgia;
+#militaryOptionsTable input {
+ width: 9em;
+ border: 1px solid #d4d4d4;
+}
+
+#militaryOptionsTable input[type="number"] {
+ width: 4em;
+}
+
+#militaryOptionsTable button {
+ width: 100%;
}
#gridOverlay {
- fill: none;
+ fill: none;
}
#coordinateLabels {
- fill: #333333;
- font-family: monospace;
- text-shadow: 0 0 4px white;
- stroke-width: 0;
- dominant-baseline: central;
- text-anchor: middle;
+ fill: #333333;
+ font-family: var(--monospace);
+ text-shadow: 0 0 4px white;
+ stroke-width: 0;
+ dominant-baseline: central;
+ text-anchor: middle;
}
ul.share-buttons {
- margin: 4px 0 0 0;
- padding-left: 8%;
+ margin: 4px 0 0 0;
+ padding-left: 8%;
}
ul.share-buttons li {
- padding: 0;
- background: none !important;
- width: 16%;
- margin: 0;
+ padding: 0;
+ background: none !important;
+ width: 16%;
+ margin: 0;
}
ul.share-buttons img {
- width: 18px;
+ width: 2em;
}
input[type="checkbox"] {
- display: none;
+ display: none;
}
.checkbox,
.checkbox-label {
- margin: 3px;
- cursor: pointer;
+ cursor: pointer;
}
-.checkbox+.checkbox-label:before {
- content: '';
- display: inline-block;
- vertical-align: text-top;
- width: .6em;
- height: .6em;
- padding: .2em;
- margin-right: .2em;
- border: 1px solid darkgrey;
- border-radius: 15%;
- background: white;
+.checkbox + .checkbox-label:before {
+ content: "";
+ display: inline-block;
+ vertical-align: bottom;
+ width: 0.6em;
+ height: 0.6em;
+ padding: 0.2em;
+ margin-right: 0.2em;
+ border: 1px solid darkgrey;
+ border-radius: 15%;
+ background: white;
+ font-family: var(--monospace);
}
-.checkbox:checked+.checkbox-label:before {
- line-height: .8em;
- font-weight: bold;
- content: '✓';
- color: #333333;
-}
-
-.shadowed {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- display: flex;
- align-items: center;
- justify-content: center;
- z-index: 10;
- pointer-events: none;
- text-align: center;
- background: rgba(0, 0, 0, .5);
-}
-
-#map-dragged p {
- font-size: 2.4em;
- color: #fff5da;
- text-shadow: 0px 1px 4px #4c3a35;
-}
-
-#map-dragged p:before {
- content: '';
- display: inline-block;
- vertical-align: middle;
- height: 100%;
+.checkbox:checked + .checkbox-label:before {
+ line-height: 0.8em;
+ font-weight: bold;
+ content: "✓";
+ color: #333333;
}
div.textual select,
-div.textual textarea {
- font-family: Copperplate, monospace;
-}
-
+div.textual textarea,
div.textual input {
- font-family: Copperplate, monospace;
+ font-family: var(--monospace);
}
div.textual fieldset {
- margin: 3px 3px 5px 0;
- border-style: dashed;
+ margin: 3px 3px 5px 0;
+ border-style: dashed;
}
-div.textual span, .textual legend {
- font-size: .8em;
- font-weight: bold;
+div.textual span,
+.textual legend {
+ font-size: 0.9em;
+ font-weight: bold;
}
#namesbaseExamples {
- font-family: Copperplate, monospace;
- cursor: pointer;
+ font-family: var(--monospace);
+ cursor: pointer;
}
#markers {
- cursor: pointer;
- font-family: monospace;
- -moz-user-select: none;
- user-select: none;
- text-anchor: middle;
-}
-
-#markerEditor > button {
- vertical-align: top;
-}
-
-#markerIconTable {
- font-size: 1.6em;
- cursor: pointer;
-}
-
-#markerIconTable td:hover {
- transition: .1s;
- color: #3c3ca9;
-}
-
-#markerIconTable td:active {
- transform: translate(0px, 1px);
-}
-
-#markerIconTable td.selected {
- outline: 1px solid #9b9b9b;
+ cursor: pointer;
+ font-family: var(--monospace);
+ user-select: none;
+ text-anchor: middle;
+ dominant-baseline: central;
}
.highlighted {
- outline-width: 2px;
- outline-style: dashed;
- outline-color: #0da6ff;
- outline-offset: 100px;
- fill: none;
+ outline-width: 2px;
+ outline-style: dashed;
+ outline-color: #0da6ff;
+ outline-offset: 100px;
+ fill: none;
}
-div#notes {
- display: none;
- position: fixed;
- width: 28vw;
- right: 1vw;
- top: 1vw;
- font-size: 1.2em;
- border: 1px solid #5e4fa2;
- background: rgba(255, 250, 228, 0.7);
- box-shadow: 2px 2px 5px -3px #3a2804;
- white-space: pre-line;
- pointer-events: none;
+#notes {
+ display: none;
+ position: fixed;
+ width: 28vw;
+ right: 1vw;
+ top: 1vw;
+ font-size: 1.2em;
+ border: 1px solid #5e4fa2;
+ background: rgba(255, 250, 228, 0.7);
+ box-shadow: 2px 2px 5px -3px #3a2804;
}
-div#notesHeader {
- font-weight: bold;
- font-size: 1.3em;
- padding: 0 0 4px 14px;
- border-bottom: 1px solid #5e4fa2;
+@media screen and (max-width: 600px) {
+ #notes {
+ width: 50vw;
+ }
}
-div#notesBody {
- padding: 0 10px;
+#notesHeader {
+ font-weight: bold;
+ font-size: 1.3em;
+ padding: 16px 0 4px 12px;
+ border-bottom: 1px solid #5e4fa2;
+}
+
+#notesBody {
+ padding: 14px 12px;
+ max-height: 80vh;
+ overflow: auto;
+}
+
+#notesBody > iframe {
+ user-select: none;
+}
+
+#notesBody p {
+ margin: 4px;
+}
+
+#notesLegend {
+ width: auto;
+ height: 87%;
+ outline: 0;
+ overflow-y: auto;
+ padding: 0.6em;
+ font-family: var(--monospace);
+ background-color: #fff;
+ border: 1px solid #dedede;
+ color: #000;
}
svg.button {
- position: relative;
- background-color: transparent;
- margin: -5px;
- padding: 0;
+ position: relative;
+ background-color: transparent;
+ margin: -5px;
+ padding: 0;
}
#reliefEditor > div > div {
- font-style: italic;
- display: inline-block;
+ font-style: italic;
+ display: inline-block;
}
#reliefEditor div.reliefEditorLabel {
- width: 4em;
+ width: 4em;
}
#reliefEditor input[type="range"] {
- width: 16em;
-}
-
-#reliefEditor input[type="number"] {
- width: 3em;
+ width: 16em;
}
#reliefIconsDiv {
- margin-top: 2px;
- padding: 2px;
+ margin-top: 2px;
+ padding: 2px;
+ width: 100%;
}
#reliefIconsDiv svg {
- width: 40px;
- height: 40px;
- background-color: #e7e6e4;
- border: 1px solid #a9a9a9;
- cursor: pointer;
+ width: 40px;
+ height: 40px;
+ background-color: #e7e6e4;
+ border: 1px solid #a9a9a9;
+ cursor: pointer;
}
#reliefIconsDiv svg:hover {
- border-color: #5c5c5c;
- background-color: #eef6fb;
- transition: all .3s ease-out 3s;
- transform: scale(2);
+ border-color: #5c5c5c;
+ background-color: #eef6fb;
+ transition: all 0.3s ease-out 3s;
+ transform: scale(2);
}
#reliefIconsDiv svg.pressed {
- border: 1px solid #b3352c;
- background-color: #f2f2f2;
+ border: 1px solid #b3352c;
+ background-color: #f2f2f2;
}
#reliefIconsSeletionAny {
- display: none;
- text-anchor: middle;
- dominant-baseline: central;
+ display: none;
+ text-anchor: middle;
+ dominant-baseline: central;
}
#alertMessage {
- -moz-user-select: text;
- user-select: text;
- max-height: 70vh;
- max-width: 75vw;
- overflow: auto;
+ user-select: text;
+ max-height: 70vh;
+ max-width: 75vw;
+ overflow: auto;
}
#alertMessage ul {
- padding-left: 15px;
- margin: 10px 0;
+ padding-left: 1.2em;
+ margin: 1em 0;
}
.pseudoLink {
- cursor: pointer;
+ cursor: pointer;
text-decoration: underline;
}
-#info-line {
- font-size: .9em;
- color: gray;
- user-select: none;
+.info-line {
+ font-size: 0.9em;
+ font-style: italic;
+ color: gray;
+ user-select: none;
}
.optionsSeedRestore {
- font-size: 12px;
- cursor: pointer;
- margin-right: 2px;
+ font-size: 12px;
+ cursor: pointer;
+ margin-right: 2px;
}
.optionsSeedRestore:hover {
- color: blue;
+ color: blue;
}
#worldControls {
- width: 16em;
- display: inline-block;
- vertical-align: top;
+ width: 16em;
+ display: inline-block;
+ vertical-align: top;
}
#worldControls > div {
- display: block;
- margin: 1px 0;
- padding: 2px 0;
+ display: block;
+ margin: 1px 0;
+ padding: 2px 0;
}
#worldControls input[type="number"] {
- border: 1px solid #e5e5e5;
- padding: 0px;
- width: 3.2em;
+ border: 1px solid #e5e5e5;
+ padding: 0px;
+ width: 4em;
}
#worldControls i.icon-lock-open,
#worldControls i.icon-lock {
- color: #626573;
- font-size: .8em;
- cursor: pointer;
+ color: #626573;
+ font-size: 0.8em;
+ cursor: pointer;
}
#globe {
- stroke: black;
- stroke-width: 1;
+ stroke: black;
+ stroke-width: 1;
}
#globeNoteLines {
- stroke-dasharray: 5;
- stroke: #bbb;
+ stroke-dasharray: 5;
+ stroke: #bbb;
}
#globaAxisLabels {
- font-style: italic;
- font-size: 9px;
- font-family: monospace;
- stroke: none;
- fill: #001754;
+ font-style: italic;
+ font-size: 9px;
+ font-family: var(--monospace);
+ stroke: none;
+ fill: #001754;
}
#globeLatLabels {
- font-size: 12px;
- font-family: monospace;
- stroke: none;
- fill: #001754;
+ font-size: 12px;
+ font-family: var(--monospace);
+ stroke: none;
+ fill: #001754;
}
#globeWindArrows {
- fill: none;
- stroke: #6072a3;
- cursor: pointer;
+ fill: none;
+ stroke: #6072a3;
+ cursor: pointer;
}
#globeWindArrows path {
- stroke-width: 1.7px;
- fill: none;
- stroke: #6072a3;
- pointer-events: none;
+ stroke-width: 1.7px;
+ fill: none;
+ stroke: #6072a3;
+ pointer-events: none;
}
#globeWindArrows circle {
- fill: #fff;
- fill-opacity: 0;
- stroke-opacity: .05;
+ fill: #fff;
+ fill-opacity: 0;
+ stroke-opacity: 0.05;
}
#globaAxisLabels #restoreWind:hover {
- cursor: pointer;
- fill: blue;
-}
-
-#globeOutline {
- fill: url(#temperatureGradient);
+ cursor: pointer;
+ fill: blue;
}
#globeArea {
- fill: white;
- fill-opacity: .3;
+ fill: white;
+ fill-opacity: 0.3;
}
#globeGraticule {
- fill: none;
- stroke-width: .2;
+ fill: none;
+ stroke-width: 0.2;
+}
+
+#globePrimeMeridian {
+ stroke: blue;
+ stroke-width: 1.4;
}
#globeEquator {
- stroke: red;
- stroke-width: 1.4;
+ stroke: red;
+ stroke-width: 1.4;
}
#legend {
- cursor: move;
- -moz-user-select: none;
- user-select: none;
+ cursor: move;
+ user-select: none;
}
.dontAsk {
- display: inline-block;
- margin: .9em 0 0 .6em;
+ margin: 0.9em 0 0 0.6em;
+ display: inline-flex;
+ align-items: center;
}
#errorBox {
- font-size: .9em;
- font-family: Consolas, monospace;
- color: #920303;
- background-color: #dabdbd91;
- padding: 2px;
- border: 1px solid #916e7f;
+ font-size: 0.9em;
+ font-family: var(--monospace);
+ color: #920303;
+ background-color: #dabdbd91;
+ padding: 2px;
+ border: 1px solid var(--header);
}
.announcement {
- background-color: #a18888;
- color: white;
- padding: .4em .5em;
- border: dashed 1px #5d4651;
+ background-color: #a18888;
+ color: white;
+ padding: 0.4em 0.5em;
+ border: dashed 1px var(--dark-solid);
+}
+
+.speaker {
+ font-size: 0.9em;
+ cursor: pointer;
+}
+
+#prompt {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ max-width: 23em;
+ padding: 1.2em;
+ background-color: var(--bg-dialogs);
+ border: solid 1px var(--dark-solid);
+ font-size: 1.2em;
+ z-index: 1000;
+}
+
+#promptText {
+ padding: 0 0 0.6em 0;
+ font-weight: bold;
+ font-family: var(--sans-serif);
+}
+
+#mapOverlay {
+ position: absolute;
+ inset: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 10;
+ pointer-events: none;
+ text-align: center;
+ background: rgba(0, 0, 0, 0.5);
+ font-size: 2.4em;
+ color: #fff5da;
+ text-shadow: 0px 1px 4px #4c3a35;
+}
+
+.epgrid line {
+ stroke: lightgrey;
+ stroke-opacity: 0.5;
+ shape-rendering: crispEdges;
+}
+
+.epgrid path {
+ stroke-width: 0;
}
#debug {
- font-size: 1px;
- opacity: .8;
+ font-size: 1px;
+ opacity: 0.8;
+}
+
+#markerTypeSelector {
+ font-size: 0.85em;
+}
+
+#markerTypeSelectorWrapper {
+ position: relative;
+}
+
+#markerTypeSelectMenu {
+ display: none;
+}
+
+#markerTypeSelectMenu.visible {
+ display: block;
+ position: absolute;
+ height: 250px;
+ width: 170px;
+ overflow-y: scroll;
+ background: inherit;
+ bottom: 100%;
+ left: 0;
+ background: white;
+}
+
+#markerTypeSelectMenu > button {
+ display: block;
+ width: 100%;
+ border: 1px solid #ddd;
+ margin-bottom: 1px;
+}
+
+#markerTypeSelectMenu > button:hover {
+ background: #ccc;
+}
+
+.separator {
+ display: flex;
+ align-items: center;
+ text-align: center;
+
+ font-style: italic;
+ font-weight: bold;
+ color: #222;
+ margin: 0.8em 0 0 0;
+}
+.separator::before,
+.separator::after {
+ content: "";
+ flex: 1;
+ border-bottom: 1px solid #333;
+}
+.separator:not(:empty)::before {
+ margin-right: 0.25em;
+}
+.separator:not(:empty)::after {
+ margin-left: 0.25em;
+}
+
+@keyframes clockwiseBorderPulse {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+#chat-widget-container {
+ user-select: none;
+}
+
+#chat-widget-minimized {
+ animation: fadeIn 1s ease-in;
+ transform: scale(0.65);
+ opacity: var(--bg-opacity);
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: var(--bg-opacity);
+ }
}
@media print {
- div, canvas {display: none;}
+ div,
+ canvas {
+ display: none;
+ }
}
@media only screen and (max-width: 420px) {
- #collapsible, #options {
- margin: 0;
- border: 0;
- }
-
- #options {
- height: 100vh;
- width: 100vw;
- }
+ table {
+ width: 100%;
+ }
- table {
- width: 100%;
- }
-
- .tabcontent {
- max-width: 100%;
- }
+ .tabcontent {
+ max-width: 100%;
+ }
- .drag-trigger {
- display: none;
- }
+ .drag-trigger {
+ display: none;
+ }
+}
+
+@media (prefers-color-scheme: dark) {
+ body {
+ background: #25252a;
+ }
}
diff --git a/index.html b/index.html
index 20afab01..5a18e579 100644
--- a/index.html
+++ b/index.html
@@ -1,3345 +1,8184 @@
-
-
-
- Azgaar's Fantasy Map Generator
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Port
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Azgaar's Fantasy Map Generator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Azgaar's
-
Fantasy Map Generator
-
v. 1.2
-
LOADING. . .
-
-
-
-
-
-
►
-
New Map!
+
+
+
+
+
+
+
+
+
+
Azgaar's
+
Fantasy Map Generator
+
+
LOADING. . .
+
-
-
-
-
-
◄
-
Layers
-
Style
-
Options
-
Tools
-
About
+
+
+
+ ►
+
+
+ New Map!
+
-
-
Layers preset:
-
- Political map
- Cultural map
- Religions map
- Provinces map
- Biomes map
- Heightmap
- Physical map
- Places of interest
- Pure landmass
- Custom (not saved)
-
-
-
+
+
-
Displayed layers and layers order:
-
- Tex ture
- H eightmap
- B iomes
- Ce lls
- G rid
- Co ordinates
- W ind Rose
- Riv ers
- Relief
- R eligions
- C ultures
- S tates
- Provin ces
- Z ones
- Bord ers
- Rou tes
- T emperature
- P opulation
- Precipita tion
- L abels
- I cons
- M arkers
- Rulers
- Scale Bar
-
-
-
-
View mode:
-
Standard
-
3D scene
-
Globe
+
+
+ ◄
+
+ Layers
+ Style
+ Options
+ Tools
+ About
-
-
-
Style preset:
-
- Default
- Ancient
- Gloom
- Clean
- Monochrome (for heightmap)
-
-
-
+
+
Layers preset:
+
+ Political map
+ Cultural map
+ Religions map
+ Provinces map
+ Biomes map
+ Heightmap
+ Physical map
+ Places of interest
+ Military map
+ Emblems
+ Pure landmass
+ Custom (not saved)
+
+
+
-
Select element:
-
- Anchor Icons
- Biomes
- Borders
- Burg Icons
- Cells
- Coastline
- Coordinates
- Cultures
- Fogging
- Grid
- Heightmap
- Labels
- Lakes
- Landmass
- Legend
- Markers
- Ocean
- Population
- Precipitation
- Provinces
- Relief Icons
- Religions
- Rivers
- Routes
- Rulers
- States
- Temperature
- Texture
- Wind Rose
- Zones
-
-
+
Displayed layers and layers order:
+
+
+ Tex ture
+
+
+ H eightmap
+
+
+ B iomes
+
+
+ Ce lls
+
+
+ G rid
+
+
+ Co ordinates
+
+
+ W ind Rose
+
+
+ Riv ers
+
+
+ Relief
+
+
+ R eligions
+
+
+ C ultures
+
+
+ S tates
+
+
+ P rovinces
+
+
+ Z ones
+
+
+ Bord ers
+
+
+ Rou tes
+
+
+ T emperature
+
+
+ Population
+
+
+ Ice
+
+
+ Precipita tion
+
+
+ Emblems
+
+
+ L abels
+
+
+ I cons
+
+
+ M ilitary
+
+
+ Mark ers
+
+
+ Rulers
+
+
+ Scale Bar
+
+
+ Vignette
+
+
+
Click to toggle, drag to raise or lower the layer
+
Ctrl + click to edit layer style
-
- Please ensure the element is toggled on!
+
+
View mode:
+
+ Standard
+
+
+ 3D scene
+
+
Globe
+
+
-
-
- Group
-
- regions
-
-
-
+
+
+ Style preset:
+
+
+
+
-
-
- Opacity
-
-
- 0.4
-
-
-
+
Select element:
+
+ Anchor Icons
+ Biomes
+ Borders
+ Burg Icons
+ Cells
+ Coastline
+ Coordinates
+ Cultures
+ Emblems
+ Fogging
+ Grid
+ Heightmap
+ Ice
+ Labels
+ Lakes
+ Landmass
+ Legend
+ Markers
+ Military
+ Ocean
+ Population
+ Precipitation
+ Provinces
+ Relief Icons
+ Religions
+ Rivers
+ Routes
+ Rulers
+ Scale Bar
+ States
+ Temperature
+ Texture
+ Vignette
+ Wind Rose
+ Zones
+
-
-
- Halo width
-
-
- 10
-
-
+
+
+
+
Toggle global filters:
+
Grayscale
+
Sepia
+
Dingy
+
Tint
+
+
+
+
+
+ Map settings (new map to apply):
+
+
-
+
+
+ Generator settings:
+
+
+
+
+
+ Configure World
+
+
+ Reset to defaults
+
+
-
+
+
Edit
+
+
+ Biomes
+
+
+ Burgs
+
+
+ Cultures
+
+
+ Diplomacy
+
+
+ Emblems
+
+
+ Heightmap
+
+
+ Markers
+
+
+ Military
+
+
+ Namesbase
+
+ Notes
+
+ Provinces
+
+
+ Religions
+
+
+ Rivers
+
+
+ Routes
+
+
+ States
+
+ Units
+ Zones
+
-
-
Map settings (new map to apply):
-
-
-
Generator settings:
-
-
-
Configure World
-
-
Reset to defaults
-
-
-
-
-
-
Click to configure:
-
Heightmap
-
Biomes
-
States
-
Provinces
-
Diplomacy
-
Cultures
-
Namesbase
-
Zones
-
Religions
-
Units
-
Notes
+
Create
+
+ Submap
+ Transform
+
-
-
Click to overview:
-
Burgs
-
Rivers
-
Cells
-
-
-
-
+
-
-
+
+
+ Fantasy Map Generator is an
+ open source
+ tool by Azgaar. You may use auto-generated maps as they are, edit them or even create a new map from
+ scratch. Check out the
+ Quick start , Q&A ,
+ Video tutorial , and
+ hotkeys for
+ guidance.
+
-
-
Fantasy Map Generator is a free open source tool which procedurally generates fantasy maps. You may use auto-generated maps as they are, edit them or even create a new map from scratch. Check out the quick start tutorial and Q&A for guidance.
-
Join our Discord server and Reddit community to ask questions, get help and share created maps. You may support the project on Patreon .
-
The project is under active development. For older versions see the changelog . To track the development progress see the devboard . Please report bugs here . You can also contact me directly via email .
-
A special thanks to all supporters!
-
Supporters: Aaron Meyer, Ahmad Amerih, AstralJacks, aymeric, Billy Dean Goehring, Branndon Edwards,
- Chase Mayers, Curt Flood, cyninge, Dino Princip, E.M. White, es, Fondue, Fritjof Olsson, Gatsu, Johan Fröberg, Jonathan Moore,
- Joseph Miranda, Kate, KC138, Luke Nelson, Markus Finster, Massimo Vella, Mikey, Nathan Mitchell, Paavi1, Pat, Ryan Westcott,
- Sasquatch, Shawn Spencer, Sizz_TV, Timothée CALLET, UTG community, Vlad Tomash, Wil Sisney, William Merriott, Xariun,
- Gun Metal Games, Scott Marner, Spencer Sherman, Valerii Matskevych, Alloyed Clavicle, Stewart Walsh, Ruthlyn Mollett (Javan),
- Benjamin Mair-Pratt, Diagonath, Alexander Thomas, Ashley Wilson-Savoury, William Henry, Preston Brooks, JOSHUA QUALTIERI,
- Hilton Williams, Katharina Haase, Hisham Bedri, Ian arless, Karnat, Bird, Kevin, Jessica Thomas, Steve Hyatt, Logicspren,
- Alfred García, Jonathan Killstring, John Ackley, Invad3r233, Norbert Žigmund, Jennifer, PoliticsBuff and many others!
+
+ Join our Discord server and
+ Reddit community to ask
+ questions, get help and share maps. The created maps can be used for free, even for commercial purposes.
+
-
-
+
+ The project is under active development. Creator and main maintainer: Azgaar. To track the development
+ progress see the
+ devboard . For older
+ versions see the
+ changelog .
+ Please report bugs
+ here . You can also
+ contact me directly via email .
+
-
- New Map
- Save
- Load
- Reset Zoom
-
+
-
-
+
+ Special thanks to
+ all supporters on Patreon!
+
-
+
-
+
+
Check out our other projects:
+
+ •
Armoria : a tool for creating heraldic
+ coats of arms
+
+
+ •
Deorum : a vast gallery of customizable fantasy
+ characters
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Any
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Features:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-