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). -[![preview](https://cdn.discordapp.com/attachments/587406457725779968/594840629213659136/preview1.png)](https://i.redd.it/8bf81ir2cy631.png) +[![preview](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/9502eae9-92e0-4d0d-9f17-a2ba4a565c01)](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/11a42446-4bd5-4526-9cb1-3ef97c868992) -[![preview](https://cdn.discordapp.com/attachments/587406457725779968/594840633911279636/preview2.png)](https://cdn.discordapp.com/attachments/515359185664344071/593888810782162964/The_Wichin_Island_sepia.png) +[![preview](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/e751a9e5-7986-4638-b8a9-362395ef7583)](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/e751a9e5-7986-4638-b8a9-362395ef7583) -[![preview](https://cdn.discordapp.com/attachments/587406457725779968/594840632296734720/preview3.png)](https://cdn.discordapp.com/attachments/515359096925454350/593891237984206848/The_Wichin_Island_-_diplomacy.png) +[![preview](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/b0d0efde-a0d1-4e80-8818-ea3dd83c2323)](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...

-
- -
- -
- - +
+ + + + + + + +
+
Azgaar's
+
Fantasy Map Generator
+
‎ ‎
+

LOADING...

+
-