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 index b027f814..f01a2390 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +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 index 1104b06f..b0a273f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ -run_php_server.bat -.vscode \ No newline at end of file +.vscode +.idea +/node_modules +/dist +/coverage 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 24402ab6..4b0e677e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright 2018-2020 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 @@ -14,6 +14,7 @@ copies or substantial portions of the Software. 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 3161d67c..3ab245b2 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,29 @@ # Fantasy Map Generator -Azgaar's _Fantasy Map Generator_ is a free client-side web application 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, the current version is available on [Github Pages](https://azgaar.github.io/Fantasy-Map-Generator). +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 old 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. -Electron desktop application is available in [releases](https://github.com/Azgaar/Fantasy-Map-Generator/releases). Download archive for your architecture, unzip and run. +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 welcomed. The Tool codebase is messy and requires re-design, but I will appreciate if you start with minor changes. +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/Readme.txt b/Readme.txt deleted file mode 100644 index 6760d7eb..00000000 --- a/Readme.txt +++ /dev/null @@ -1,5 +0,0 @@ -Azgaar's Fantasy Map Generator -This is an open-source software available under MIT license -https://github.com/Azgaar/Fantasy-Map-Generator - -To run the tool unzip ALL files and open index.html in browser \ 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 index c05b085f..59678314 100644 --- a/charges/anchor.svg +++ b/charges/anchor.svg @@ -1,5 +1,5 @@ - + 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 index 2677e045..b3dad13d 100644 --- a/charges/annulet.svg +++ b/charges/annulet.svg @@ -1,5 +1,5 @@ - + 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 index 60a1cc65..45d09b8d 100644 --- a/charges/armillarySphere.svg +++ b/charges/armillarySphere.svg @@ -1,18 +1 @@ - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/charges/arrow.svg b/charges/arrow.svg index c9e8f852..2135169f 100644 --- a/charges/arrow.svg +++ b/charges/arrow.svg @@ -1,9 +1,10 @@ - - - - - - + + + + + + + diff --git a/charges/arrowsSheaf.svg b/charges/arrowsSheaf.svg index 41880647..4b879e10 100644 --- a/charges/arrowsSheaf.svg +++ b/charges/arrowsSheaf.svg @@ -1,24 +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 index 9fe44e31..847ea7bd 100644 --- a/charges/bearPassant.svg +++ b/charges/bearPassant.svg @@ -1,22 +1,23 @@ - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/charges/bearRampant.svg b/charges/bearRampant.svg index f320d194..418d6fb3 100644 --- a/charges/bearRampant.svg +++ b/charges/bearRampant.svg @@ -1,23 +1,23 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 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 index 73124adb..307b6493 100644 --- a/charges/bell.svg +++ b/charges/bell.svg @@ -1,18 +1,18 @@ - + - + + - - + diff --git a/charges/billet.svg b/charges/billet.svg index 6398df51..9482f5a7 100644 --- a/charges/billet.svg +++ b/charges/billet.svg @@ -1,5 +1,5 @@ - + 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 index fced611a..436fb439 100644 --- a/charges/boarRampant.svg +++ b/charges/boarRampant.svg @@ -1,9 +1,12 @@ - + - - - + + + + + + diff --git a/charges/boat.svg b/charges/boat.svg index 02070e6e..b50f6194 100644 --- a/charges/boat.svg +++ b/charges/boat.svg @@ -1,7 +1,7 @@ - + - + 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 index c0033517..b1f2c8ec 100644 --- a/charges/bow.svg +++ b/charges/bow.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/bowWithArrow.svg b/charges/bowWithArrow.svg index ad95d94d..12d7f9ff 100644 --- a/charges/bowWithArrow.svg +++ b/charges/bowWithArrow.svg @@ -1,14 +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 index e558bfaa..b83ba97d 100644 --- a/charges/buckle.svg +++ b/charges/buckle.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/bugleHorn.svg b/charges/bugleHorn.svg index b006a69f..a7985ca6 100644 --- a/charges/bugleHorn.svg +++ b/charges/bugleHorn.svg @@ -1,7 +1,7 @@ - + - + @@ -9,9 +9,10 @@ - - - - + + + + + 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 index 88ae177e..d3ddeccc 100644 --- a/charges/bullHeadCaboshed.svg +++ b/charges/bullHeadCaboshed.svg @@ -1,7 +1,7 @@ - + - + diff --git a/charges/bullPassant.svg b/charges/bullPassant.svg index c73a9795..0314b64e 100644 --- a/charges/bullPassant.svg +++ b/charges/bullPassant.svg @@ -1,19 +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 index 49a2c83b..a8bf102c 100644 --- a/charges/cancer.svg +++ b/charges/cancer.svg @@ -1,5 +1,5 @@ - + 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 index 24f687c0..bfeeb049 100644 --- a/charges/carreau.svg +++ b/charges/carreau.svg @@ -1,6 +1,6 @@ - - + + diff --git a/charges/castle.svg b/charges/castle.svg index 0a2168e6..43a2fa38 100644 --- a/charges/castle.svg +++ b/charges/castle.svg @@ -1,24 +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 index 9e7207a7..7bfad7ac 100644 --- a/charges/cavalier.svg +++ b/charges/cavalier.svg @@ -1,8 +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 index daf10466..0f4f95f6 100644 --- a/charges/chalice.svg +++ b/charges/chalice.svg @@ -1,10 +1,13 @@ - - - - - - - + + + + + + + + + + diff --git a/charges/cinquefoil.svg b/charges/cinquefoil.svg index 1dfea574..49db293e 100644 --- a/charges/cinquefoil.svg +++ b/charges/cinquefoil.svg @@ -1,14 +1,15 @@ - - - - - - - - - - + + + + + + + + + + + diff --git a/charges/cock.svg b/charges/cock.svg index cfd58106..4b100034 100644 --- a/charges/cock.svg +++ b/charges/cock.svg @@ -1,22 +1,24 @@ - + - - + + + - + + - - + + - - + + 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 index 8a6a8139..dec495cc 100644 --- a/charges/compassRose.svg +++ b/charges/compassRose.svg @@ -1,5 +1,5 @@ - + 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 index 6564982a..74378210 100644 --- a/charges/cowHorns.svg +++ b/charges/cowHorns.svg @@ -1,5 +1,5 @@ - + 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 index f6f1f921..9181995b 100644 --- a/charges/crescent.svg +++ b/charges/crescent.svg @@ -1,5 +1,5 @@ - + 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 index 1149b3ef..631ef998 100644 --- a/charges/crosier.svg +++ b/charges/crosier.svg @@ -1,16 +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 index a3844430..ff4b6c02 100644 --- a/charges/crossArrowed.svg +++ b/charges/crossArrowed.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossAvellane.svg b/charges/crossAvellane.svg index 387a7072..303e7f72 100644 --- a/charges/crossAvellane.svg +++ b/charges/crossAvellane.svg @@ -1,5 +1,5 @@ - + 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 index 345d7d82..2d246b29 100644 --- a/charges/crossBottony.svg +++ b/charges/crossBottony.svg @@ -1,5 +1,5 @@ - + 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 index e47c2834..6abe10fe 100644 --- a/charges/crossCeltic.svg +++ b/charges/crossCeltic.svg @@ -1,6 +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 index bc5771da..2b8bff16 100644 --- a/charges/crossCercelee.svg +++ b/charges/crossCercelee.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossClechy.svg b/charges/crossClechy.svg index 51a143e4..c246534e 100644 --- a/charges/crossClechy.svg +++ b/charges/crossClechy.svg @@ -1,6 +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 index c9190575..1def3830 100644 --- a/charges/crossErminee.svg +++ b/charges/crossErminee.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossFitchy.svg b/charges/crossFitchy.svg index 87e9265c..954b8e70 100644 --- a/charges/crossFitchy.svg +++ b/charges/crossFitchy.svg @@ -1,6 +1,6 @@ - + - + diff --git a/charges/crossFleury.svg b/charges/crossFleury.svg index 86d6b9ed..d617a15d 100644 --- a/charges/crossFleury.svg +++ b/charges/crossFleury.svg @@ -1,5 +1,5 @@ - + 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 index 6a19f8e5..9308a143 100644 --- a/charges/crossFourchy.svg +++ b/charges/crossFourchy.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossGamma.svg b/charges/crossGamma.svg index 7610c995..d2da6490 100644 --- a/charges/crossGamma.svg +++ b/charges/crossGamma.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossHummetty.svg b/charges/crossHummetty.svg index 5a7388fc..e2676ab2 100644 --- a/charges/crossHummetty.svg +++ b/charges/crossHummetty.svg @@ -1,5 +1,5 @@ - + 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 index f704ccb4..5718dacf 100644 --- a/charges/crossMaltese.svg +++ b/charges/crossMaltese.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossMoline.svg b/charges/crossMoline.svg index 4df553ef..97f3b918 100644 --- a/charges/crossMoline.svg +++ b/charges/crossMoline.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossOccitan.svg b/charges/crossOccitan.svg index 60f102d7..15fe7587 100644 --- a/charges/crossOccitan.svg +++ b/charges/crossOccitan.svg @@ -1,5 +1,5 @@ - + 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 index 3fda2f9c..aaaec339 100644 --- a/charges/crossPatonce.svg +++ b/charges/crossPatonce.svg @@ -1,5 +1,5 @@ - + 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 index d4c3da87..1c3bf761 100644 --- a/charges/crossPattee.svg +++ b/charges/crossPattee.svg @@ -1,6 +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 index dbf85e7b..da002347 100644 --- a/charges/crossPommy.svg +++ b/charges/crossPommy.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossPotent.svg b/charges/crossPotent.svg index c8aa500f..cc3bb92f 100644 --- a/charges/crossPotent.svg +++ b/charges/crossPotent.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/crossSaltire.svg b/charges/crossSaltire.svg index dd5d8f4b..8798ba45 100644 --- a/charges/crossSaltire.svg +++ b/charges/crossSaltire.svg @@ -1,6 +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 index 4927e0a7..0789faf5 100644 --- a/charges/crossTau.svg +++ b/charges/crossTau.svg @@ -1,5 +1,5 @@ - + 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 index 71287ee4..0fa95bd7 100644 --- a/charges/crossVoided.svg +++ b/charges/crossVoided.svg @@ -1,5 +1,5 @@ - + 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 index e359ce28..645b68a3 100644 --- a/charges/crosslet.svg +++ b/charges/crosslet.svg @@ -1,6 +1 @@ - - - - - - + \ No newline at end of file diff --git a/charges/crown.svg b/charges/crown.svg index 3a7629c8..00dbbacf 100644 --- a/charges/crown.svg +++ b/charges/crown.svg @@ -1,5 +1,5 @@ - + @@ -7,8 +7,8 @@ - + - + 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 index a4f702f5..aca87f99 100644 --- a/charges/deerHeadCaboshed.svg +++ b/charges/deerHeadCaboshed.svg @@ -1,10 +1,10 @@ - + - + diff --git a/charges/delf.svg b/charges/delf.svg index fc4c57c9..227bd04f 100644 --- a/charges/delf.svg +++ b/charges/delf.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/dolphin.svg b/charges/dolphin.svg index afb48d23..be5b00bd 100644 --- a/charges/dolphin.svg +++ b/charges/dolphin.svg @@ -1,14 +1,14 @@ - + - - - - - - + + + + + + - + @@ -21,40 +21,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 36986715..b8fbc58e 100644 --- a/charges/dragonPassant.svg +++ b/charges/dragonPassant.svg @@ -1,30 +1,38 @@ - + - + - - + + + + - - - + + + + + - - + + + + + - - + + + - + diff --git a/charges/dragonRampant.svg b/charges/dragonRampant.svg index d2b2ee68..6ff64c2a 100644 --- a/charges/dragonRampant.svg +++ b/charges/dragonRampant.svg @@ -1,54 +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 index 963a289c..c52fd495 100644 --- a/charges/eagle.svg +++ b/charges/eagle.svg @@ -1,87 +1,91 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/charges/eagleTwoHeards.svg b/charges/eagleTwoHeads.svg similarity index 71% rename from charges/eagleTwoHeards.svg rename to charges/eagleTwoHeads.svg index 079f539c..cc8ac124 100644 --- a/charges/eagleTwoHeards.svg +++ b/charges/eagleTwoHeads.svg @@ -1,11 +1,12 @@ - - - - - - - + + + + + + + + @@ -17,86 +18,86 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index d5af22ed..fed4c13f 100644 --- a/charges/elephant.svg +++ b/charges/elephant.svg @@ -1,11 +1,11 @@ - + - + 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 index 6d912bfd..4fda9dda 100644 --- a/charges/escallop.svg +++ b/charges/escallop.svg @@ -1,18 +1,19 @@ + - - - - - - - - - - - + + + + + + + + + + + diff --git a/charges/estoile.svg b/charges/estoile.svg index af35f897..6966ccbc 100644 --- a/charges/estoile.svg +++ b/charges/estoile.svg @@ -1,5 +1,5 @@ - + 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 index 2902d3ac..2583e48f 100644 --- a/charges/fleurDeLis.svg +++ b/charges/fleurDeLis.svg @@ -1,5 +1,5 @@ - + 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 index 2ef97e3b..1ed8ac67 100644 --- a/charges/fountain.svg +++ b/charges/fountain.svg @@ -1,5 +1,5 @@ - + 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 index 8da86e7c..eac10ed4 100644 --- a/charges/fusil.svg +++ b/charges/fusil.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/garb.svg b/charges/garb.svg index 07fb901e..fbefacd8 100644 --- a/charges/garb.svg +++ b/charges/garb.svg @@ -1,149 +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 index c323cb0f..721c3f15 100644 --- a/charges/goat.svg +++ b/charges/goat.svg @@ -1,13 +1,14 @@ - + - + - + - + + diff --git a/charges/goutte.svg b/charges/goutte.svg index a836f7b4..40f23183 100644 --- a/charges/goutte.svg +++ b/charges/goutte.svg @@ -1,5 +1,5 @@ - + 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 index 3dc41b55..916d70cf 100644 --- a/charges/greyhoundCourant.svg +++ b/charges/greyhoundCourant.svg @@ -1,27 +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 index 025c2654..871b3591 100644 --- a/charges/griffinPassant.svg +++ b/charges/griffinPassant.svg @@ -1,54 +1,56 @@ - + - - + + - + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/griffinRampant.svg b/charges/griffinRampant.svg index 40d8c9f0..da2cfebe 100644 --- a/charges/griffinRampant.svg +++ b/charges/griffinRampant.svg @@ -1,23 +1,23 @@ - + - - + + - + - + - - + + - + - - + + @@ -29,87 +29,87 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/hand.svg b/charges/hand.svg index f23ca361..91c279ae 100644 --- a/charges/hand.svg +++ b/charges/hand.svg @@ -1,12 +1,12 @@ - + - - - - - + + + + + diff --git a/charges/harp.svg b/charges/harp.svg index 7832707b..91e5ee08 100644 --- a/charges/harp.svg +++ b/charges/harp.svg @@ -1,28 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/charges/hatchet.svg b/charges/hatchet.svg index a543a5f7..37052556 100644 --- a/charges/hatchet.svg +++ b/charges/hatchet.svg @@ -1,8 +1,8 @@ - + - - + + diff --git a/charges/head.svg b/charges/head.svg index 5c49b6f8..08e36060 100644 --- a/charges/head.svg +++ b/charges/head.svg @@ -1,16 +1 @@ - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/charges/headWreathed.svg b/charges/headWreathed.svg index d3dab379..b6dafc64 100644 --- a/charges/headWreathed.svg +++ b/charges/headWreathed.svg @@ -1,12 +1,12 @@ - + - + - - + + diff --git a/charges/heart.svg b/charges/heart.svg index 01ce307b..56d0940c 100644 --- a/charges/heart.svg +++ b/charges/heart.svg @@ -1,5 +1,5 @@ - + 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 index 8a4ecca3..4893b082 100644 --- a/charges/heron.svg +++ b/charges/heron.svg @@ -1,25 +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 index 55b46119..be7fee6c 100644 --- a/charges/horseRampant.svg +++ b/charges/horseRampant.svg @@ -1,25 +1,26 @@ - + - + - + + - + - - - - - - - - - - + + + + + + + + + + diff --git a/charges/horseSalient.svg b/charges/horseSalient.svg index 2b487240..21b5db48 100644 --- a/charges/horseSalient.svg +++ b/charges/horseSalient.svg @@ -1,23 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/charges/horseshoe.svg b/charges/horseshoe.svg index 542acae1..3bd51f7a 100644 --- a/charges/horseshoe.svg +++ b/charges/horseshoe.svg @@ -1,5 +1,5 @@ - + 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 index 90f135e0..6fb883ea 100644 --- a/charges/key.svg +++ b/charges/key.svg @@ -1,16 +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 index 8854a232..1d574b53 100644 --- a/charges/lamb.svg +++ b/charges/lamb.svg @@ -1,7 +1,7 @@ - + - + @@ -9,10 +9,10 @@ - - - - + + + + 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 index 6ff03aea..7dd6b396 100644 --- a/charges/lionPassant.svg +++ b/charges/lionPassant.svg @@ -1,32 +1,32 @@ - + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + - + @@ -34,148 +34,150 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 index 552d2647..8aab2b09 100644 --- a/charges/lionRampant.svg +++ b/charges/lionRampant.svg @@ -1,21 +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 index 4f724811..cf09c61e 100644 --- a/charges/lochaberAxe.svg +++ b/charges/lochaberAxe.svg @@ -1,9 +1,9 @@ - + - - + + diff --git a/charges/log.svg b/charges/log.svg index 9f8a01bc..387fad44 100644 --- a/charges/log.svg +++ b/charges/log.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/lozenge.svg b/charges/lozenge.svg index cfa6f506..4cfb22c9 100644 --- a/charges/lozenge.svg +++ b/charges/lozenge.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/lozengeFaceted.svg b/charges/lozengeFaceted.svg index 23462185..63a575e3 100644 --- a/charges/lozengeFaceted.svg +++ b/charges/lozengeFaceted.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/lozengePloye.svg b/charges/lozengePloye.svg index 9ff50ea2..0187c681 100644 --- a/charges/lozengePloye.svg +++ b/charges/lozengePloye.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/lute.svg b/charges/lute.svg index 3e6c70d5..c88cc397 100644 --- a/charges/lute.svg +++ b/charges/lute.svg @@ -1,15 +1 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/charges/lymphad.svg b/charges/lymphad.svg index 86186299..457f10d7 100644 --- a/charges/lymphad.svg +++ b/charges/lymphad.svg @@ -1,75 +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 index b6d9fb24..ecb418f9 100644 --- a/charges/mallet.svg +++ b/charges/mallet.svg @@ -1,8 +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 index c274a6ad..b867e47a 100644 --- a/charges/mascle.svg +++ b/charges/mascle.svg @@ -1,5 +1,5 @@ - + 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 index 8aa647fd..2658e971 100644 --- a/charges/mullet.svg +++ b/charges/mullet.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet10.svg b/charges/mullet10.svg index b34684f5..60ed608a 100644 --- a/charges/mullet10.svg +++ b/charges/mullet10.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet4.svg b/charges/mullet4.svg index ea581ebf..37242f99 100644 --- a/charges/mullet4.svg +++ b/charges/mullet4.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet6.svg b/charges/mullet6.svg index 8821b639..1a1972aa 100644 --- a/charges/mullet6.svg +++ b/charges/mullet6.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet6Faceted.svg b/charges/mullet6Faceted.svg index bf5f4a08..1ca0c335 100644 --- a/charges/mullet6Faceted.svg +++ b/charges/mullet6Faceted.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet6Pierced.svg b/charges/mullet6Pierced.svg index a58b68e4..96d6f279 100644 --- a/charges/mullet6Pierced.svg +++ b/charges/mullet6Pierced.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet7.svg b/charges/mullet7.svg index 000038ab..53321978 100644 --- a/charges/mullet7.svg +++ b/charges/mullet7.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mullet8.svg b/charges/mullet8.svg index 7e1a40af..0239a883 100644 --- a/charges/mullet8.svg +++ b/charges/mullet8.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mulletFaceted.svg b/charges/mulletFaceted.svg index 83f7a993..a43fe26e 100644 --- a/charges/mulletFaceted.svg +++ b/charges/mulletFaceted.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/mulletPierced.svg b/charges/mulletPierced.svg index 88f706b9..b469bf0c 100644 --- a/charges/mulletPierced.svg +++ b/charges/mulletPierced.svg @@ -1,5 +1,5 @@ - + 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 index 4bf6e9c3..2d7354f5 100644 --- a/charges/orb.svg +++ b/charges/orb.svg @@ -1,22 +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 index 1e65ce33..92d7dd10 100644 --- a/charges/parrot.svg +++ b/charges/parrot.svg @@ -1,13 +1,14 @@ - + - - - + + + + - - + + 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 index 543b1a1e..5335022d 100644 --- a/charges/pegasus.svg +++ b/charges/pegasus.svg @@ -1,11 +1,12 @@ - + - - - + + + - + + @@ -15,28 +16,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pike.svg b/charges/pike.svg index 3bd9ed53..812002b7 100644 --- a/charges/pike.svg +++ b/charges/pike.svg @@ -1,13 +1,13 @@ - + - - + + - + - + 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 index c1e2e4d6..06c5836e 100644 --- a/charges/pique.svg +++ b/charges/pique.svg @@ -1,5 +1,5 @@ - + 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 index 96e39d04..64cc0ff6 100644 --- a/charges/pot.svg +++ b/charges/pot.svg @@ -1,10 +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 index 03220f06..6feed725 100644 --- a/charges/rake.svg +++ b/charges/rake.svg @@ -1,26 +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 index 3d1ae0a5..6e3c4eca 100644 --- a/charges/raven.svg +++ b/charges/raven.svg @@ -1,23 +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 index b80c3d51..7ce11665 100644 --- a/charges/rose.svg +++ b/charges/rose.svg @@ -1,12 +1,12 @@ - + - + - - - - + + + + diff --git a/charges/roundel.svg b/charges/roundel.svg index c02cc392..344991ed 100644 --- a/charges/roundel.svg +++ b/charges/roundel.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/roundel2.svg b/charges/roundel2.svg index c3d8c036..fffa7ad4 100644 --- a/charges/roundel2.svg +++ b/charges/roundel2.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/charges/rustre.svg b/charges/rustre.svg index dbfe8848..60c253a1 100644 --- a/charges/rustre.svg +++ b/charges/rustre.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/sabre.svg b/charges/sabre.svg index 306ff201..0f1f002d 100644 --- a/charges/sabre.svg +++ b/charges/sabre.svg @@ -1,20 +1,19 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - \ No newline at end of file + 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 index ad87ee2e..e9cec5f4 100644 --- a/charges/sabresCrossed.svg +++ b/charges/sabresCrossed.svg @@ -1,40 +1,37 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + 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 index fb2089d0..e12c9570 100644 --- a/charges/serpent.svg +++ b/charges/serpent.svg @@ -1,10 +1,11 @@ - + + 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 index 0fd887c4..c8b3692b 100644 --- a/charges/stagsAttires.svg +++ b/charges/stagsAttires.svg @@ -1,5 +1,5 @@ - + 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 index 247515eb..6d58a55c 100644 --- a/charges/sun.svg +++ b/charges/sun.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/sunInSplendour.svg b/charges/sunInSplendour.svg index a11ab0dc..4de9c571 100644 --- a/charges/sunInSplendour.svg +++ b/charges/sunInSplendour.svg @@ -1,5 +1,5 @@ - + 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 index 491b23fd..26a345f7 100644 --- a/charges/swan.svg +++ b/charges/swan.svg @@ -1,10 +1,11 @@ - + - - - - + + + + + @@ -12,15 +13,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/charges/swanErased.svg b/charges/swanErased.svg index 40e1e588..510c380a 100644 --- a/charges/swanErased.svg +++ b/charges/swanErased.svg @@ -1,8 +1,8 @@ - + - - + + diff --git a/charges/sword.svg b/charges/sword.svg index 65f0ac35..cdf8853b 100644 --- a/charges/sword.svg +++ b/charges/sword.svg @@ -1,7 +1,7 @@ - + - + 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 index a7510939..cad51295 100644 --- a/charges/template.svg +++ b/charges/template.svg @@ -2,6 +2,7 @@ + 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 index 40df5b9e..9754803a 100644 --- a/charges/tower.svg +++ b/charges/tower.svg @@ -1,17 +1,17 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + - - - \ No newline at end of file + diff --git a/charges/tree.svg b/charges/tree.svg index 41a4b032..0e2854fc 100644 --- a/charges/tree.svg +++ b/charges/tree.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/trefle.svg b/charges/trefle.svg index 9916c5c2..8180526b 100644 --- a/charges/trefle.svg +++ b/charges/trefle.svg @@ -1,5 +1,5 @@ - + 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 index 7109e498..0a06d67c 100644 --- a/charges/triangle.svg +++ b/charges/triangle.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/trianglePierced.svg b/charges/trianglePierced.svg index 9017aead..6bbe2fc2 100644 --- a/charges/trianglePierced.svg +++ b/charges/trianglePierced.svg @@ -1,5 +1,5 @@ - + 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 index 18040236..a3102dbc 100644 --- a/charges/unicornRampant.svg +++ b/charges/unicornRampant.svg @@ -1,27 +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 index aadbde83..6133eee9 100644 --- a/charges/wheel.svg +++ b/charges/wheel.svg @@ -1,23 +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 index 04c108f2..d38622f2 100644 --- a/charges/wing.svg +++ b/charges/wing.svg @@ -1,5 +1,5 @@ - + diff --git a/charges/wingSword.svg b/charges/wingSword.svg index 4fe4b70e..75c2f80e 100644 --- a/charges/wingSword.svg +++ b/charges/wingSword.svg @@ -1,11 +1,11 @@ - + - - - + + + - + diff --git a/charges/wolfHeadErased.svg b/charges/wolfHeadErased.svg index 4f821ba8..518ea83f 100644 --- a/charges/wolfHeadErased.svg +++ b/charges/wolfHeadErased.svg @@ -1,9 +1,9 @@ - + - + diff --git a/charges/wolfPassant.svg b/charges/wolfPassant.svg index 35e68ef2..06f8761a 100644 --- a/charges/wolfPassant.svg +++ b/charges/wolfPassant.svg @@ -1,16 +1,20 @@ - + - - - - - - + + + + + + + + + - - + + + diff --git a/charges/wolfRampant.svg b/charges/wolfRampant.svg index 3c9344b0..f5c7f57c 100644 --- a/charges/wolfRampant.svg +++ b/charges/wolfRampant.svg @@ -1,18 +1,21 @@ - + - - + + - + + + + - - + + - + diff --git a/charges/wolfStatant.svg b/charges/wolfStatant.svg index ff624fb7..d592b9ef 100644 --- a/charges/wolfStatant.svg +++ b/charges/wolfStatant.svg @@ -1,29 +1,29 @@ - + - - - - - - - - - + + + + + + + + + - - - - + + + + - + - + diff --git a/charges/wyvern.svg b/charges/wyvern.svg index 2767237f..f09b821e 100644 --- a/charges/wyvern.svg +++ b/charges/wyvern.svg @@ -1,33 +1,36 @@ - + - + + - + - - + + + - + + - - - + + + - - - + + + - + @@ -35,32 +38,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wyvernWithWingsDisplayed.svg b/charges/wyvernWithWingsDisplayed.svg index ae71c5fe..d3aef9b4 100644 --- a/charges/wyvernWithWingsDisplayed.svg +++ b/charges/wyvernWithWingsDisplayed.svg @@ -1,30 +1,34 @@ - + - + + - - + + + - + - + - + + - + - + + - + 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 008faebc..4740f091 100644 --- a/icons.css +++ b/icons.css @@ -253,7 +253,7 @@ .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;} @@ -286,4 +286,5 @@ .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;} \ No newline at end of file +.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/icon.ico b/images/icon.ico deleted file mode 100644 index 78e496d0..00000000 Binary files a/images/icon.ico 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 d104ffb3..373bf63c 100644 --- a/index.css +++ b/index.css @@ -1,875 +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; } -t { - pointer-events: none; +/* 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; } -input, select, textarea { - border: 0.5px solid #DBDFE6; - border-radius: .5px; - box-sizing: border-box; +/* 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; - border-top-color: #abadb3; - padding: 0; - text-indent: 0px; + height: 1.6em; + border-top-color: #abadb3; + padding: 0; + text-indent: 0px; } input { - border-top-color: #abadb3; - padding: 2px; - text-indent: 1px; + border-top-color: #abadb3; + padding: 2px; + text-indent: 1px; } input:read-only { - cursor: default; + cursor: default; +} + +input[type="radio"] { + vertical-align: bottom; + cursor: pointer; } textarea { - padding: 2px; - text-indent: 1px; - box-sizing: border-box; - width: 100%; + 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; - z-index: 100; + 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 !important; + 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, #armies, #ice, #emblems { - 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, #terrs { - fill-rule: evenodd; +#oceanLayers, +#terrs { + fill-rule: evenodd; } #coastline { - fill: none; - stroke-linejoin: round; + fill: none; + stroke-linejoin: round; } -#regions, #cults, #relig, #biomes, #provs, #terrs, #biomes, #tooltip, #temperature, #texture, #landmass, #fogging { - pointer-events: none; +t, +#regions, +#cults, +#relig, +#biomes, +#provincesBody, +#terrs, +#tooltip, +#temperature, +#texture, +#landmass, +#vignette, +#gridOverlay, +#fogging { + pointer-events: none; } #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: Helvetica; - fill-opacity: 1; + 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: .8em; -} - -#statesBody, #provincesBody { - stroke-width: 2; - fill-rule: evenodd; - mask: url(#land); -} - -#relig, #biomes, #cults { - stroke-width: .6; - fill-rule: evenodd; - mask: url(#land); + font-size: 0.8em; } #statesHalo { - fill: none; - filter: url(#blur5); + 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; + 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: 1000; - animation: dash 80s 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.2em; + 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: .8em 0 0 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; - text-decoration: underline; + 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; - border: 0; - padding: 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"] { - font-size: .8em; + height: 1.5em; + border: 0; + cursor: pointer; + font-size: smaller; } #options input[type="text"] { - border: 0px; - width: 62%; - 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 { - 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; } -#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; + right: 10px; + bottom: 10px; + position: absolute; + display: none; } #exitCustomization > div { - width: 12em; - background: #5d4651; - cursor: move; + width: 12em; + background: var(--dark-solid); + cursor: move; } #finalizeHeightmap { - width: 100%; - border: none; - padding: .45em .75em; - margin: .4em 0; - font-family: Consolas, monospace; - animation: glowing 2s infinite; + 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 3s 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: 18.6%; - height: 100%; - padding: 6px 0px; -} - -button.options { - background-color: #997b89; - font-weight: bold; - float: left; - border: none; - border-radius: 0; - 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: -.4em .1em; - fill: #fff; - stroke: #000; - stroke-width: 5px; + 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:#eeafaa; +.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: .3em; + 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 { @@ -877,640 +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: .2em .6em .2em .6em; - border: 1px solid #ccc; - margin: .2em 0 .4em 0; - display: block; - overflow: auto; - max-height: 34vh; - width: 100%; + 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; + width: 13em; + font-weight: bold; } -tr.battleCasualties, tr.battleSurvivors { - font-style: italic; - font-size: .9em; +tr.battleCasualties, +tr.battleSurvivors { + font-style: italic; + font-size: 0.9em; } -#battleBody div.battlePhases, #battleBottom div.battleTypes { - position: fixed; - background-color: #ffffff30; + 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: .2em 0; + width: 3.2em; + display: block; + margin: 0.2em 0; } div#regimentSelectorBody { - max-height: 50vh; - font-size: .9em; + max-height: 50vh; + font-size: 0.9em; } div#regimentSelectorBody > div { - padding: .1em; - border: 1px solid #fff; + padding: 0.1em; + border: 1px solid #fff; } div#regimentSelectorBody > div:hover { - border: 1px solid #ccc; + border: 1px solid #ccc; } div#regimentSelectorBody > div.selected { - border: 1px solid #b28585; + border: 1px solid #b28585; } div#regimentSelectorBody > div.inactive { - background-color: #eee; - color: #aaa; + background-color: #eee; + color: #aaa; } div#regimentSelectorBody > div > div { - display: inline-block; - pointer-events: none; + display: inline-block; + pointer-events: none; } .drag-trigger { - border-left: 1em solid transparent; - border-right: 1em solid #000; - border-top: 1em solid transparent; - position: absolute; - right: -1px; - bottom: -1px; - opacity: .3; + 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; - opacity: .6; + 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: 3em; - height: 1em; - display: inline-block; - margin: 0 .16em; - 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; } #debug path.selected { - stroke-width: .8; - stroke: #da3126; - fill: none; + 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; - border-radius: 10%; + box-shadow: inset 1px 1px 0 0 #ccc; + border-color: #a6a6da; + background-color: #ecd8d8; + border-radius: 10%; } .ui-dialog input[type="range"] { - padding: 0; - 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: 3.5em; + 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: 12em; +#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; - max-width: 75vw; - overflow-x: hidden; - overflow-y: auto; + max-height: 75vh; + max-width: 75vw; + overflow-x: hidden; + overflow-y: auto; + scrollbar-width: thin; } -.overflow { - max-width: 93vw; - overflow: auto; - max-height: 75vh; +@media screen and (max-width: 600px) { + .table { + max-width: unset; + } } -.overflow > div { - width: max-content; +.dialog::-webkit-scrollbar, +#alertMessage::-webkit-scrollbar, +.table::-webkit-scrollbar, +.matrix-table::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: transparent; } -div.header > div { - font-weight: bold; - font-size: .9em; - display: inline-block; - position: sticky; - white-space: nowrap; - overflow-x: hidden; - vertical-align: bottom; +.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, div.states.hovered { - 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, div.totalLine > div { - display: inline-block; + display: inline-block; } -div.states>input { - width: 6em; - background: none; - border: 0; +div.states > input { + width: 7em; + background: none; + border: 0; } div.states div { - width: 3.2em; + width: 3.2em; } -div.states .statePower, div.states .biomeHabitability { - width: 4em; - -moz-appearance: textfield; +div.states .biomeHabitability { + 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, -div.states .icon-flag-empty { - cursor: pointer; +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>.cultureName { - width: 7em; -} - -div.states>.culturePopulation { - width: 4em; - cursor: pointer; +div.states > .small { + font-size: 0.9em; } div.states > select { - width: 4.6em; - cursor: pointer; - border: 0; - background-color: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; + width: 7em; + cursor: pointer; + border: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } -div.states > .cultureBase, 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 > .coaIcon { - stroke-width: 3; - width: 1.4em; - height: 1.4em; - margin: -.3em 0; - cursor: pointer; +div.states > .riverType { + width: 5em; } -div.states > .coaIcon > use { - pointer-events: none; +.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 { - width: 5em; - margin: .1em 0 0 -.3em; - position: fixed; - background-color: #ffffff; - border: 1px solid #1891ff; + width: 5em; + margin: 0.1em 0 0 -0.3em; + position: fixed; + background-color: #ffffff; + border: 1px solid #1891ff; } #diplomacySelect > div { - width: 100%; - padding-left: .3em; + width: 100%; + padding-left: 0.3em; } #diplomacySelect > div:hover { - background-color: #1891ff; - color: #ffffff; - width: calc(100% - .3em); + 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; } #burgBody div.label { - display: inline-block; + 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, -#regimentBody div.label { - display: inline-block; +#regimentBody div.label, +#markerEditor div.label { + display: inline-block; width: 5.5em; + padding: 0.3em 0; } -#regimentBody div { - margin: .1em 0; +#exportToPngTilesScreen div.label { + display: inline-block; + width: 5em; } #regimentBody input[type="number"] { - width: 5em; + width: 5em; } .burgFeature { padding: 1px; - cursor: pointer; + 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: none; - -moz-appearance: none; - appearance: none; -} - -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 { @@ -1519,674 +1652,651 @@ div.states.active { } div.states.Self { - margin-bottom: .2em; - cursor: default !important; - padding: .2em 0 0 .5em; - font-weight: bold; + 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; -} - -rect.fillRect { - stroke: #666666; - stroke-width: 2; -} - -#militaryHeader > div, -#regimentsHeader > div { - width: 5.2em; + width: 5em; } #militaryBody div.states > input { - -moz-appearance: textfield; + -moz-appearance: textfield; } #militaryBody div.states > input, #militaryBody div.states > div, #regimentsBody div.states > div { - width: 5em; + width: 5em; } #emblemBody > div { - padding: 1px 3px; - transition: all .3s ease-out; + padding: 1px 3px; + transition: all 0.3s ease-out; } #emblemBody > div.active { - background-color: #54ca7728; + background-color: #54ca7728; } #emblemArmiger { - text-align: center; - display: block; + text-align: center; + display: block; } #emblemBody .label { - width: 6em; - display: inline-block; + width: 6em; + display: inline-block; } #emblemBody select { - width: 9em; + width: 9em; } #emblemsBottom { - margin-top: 4px; - text-align: center; + margin-top: 4px; + text-align: center; } #emblemUploadControl, #emblemDownloadControl { - margin-top: .3em; - text-align: center; + 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; + 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 { - width: 22px; - 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; - margin-bottom: .2em; + 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.5em; - padding: 0px; - height: 1.2em; + 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; -} - -#scaleBar { - stroke: none; - fill: none; - cursor: pointer; -} - -#scaleBar text { - fill: #353540; - text-anchor: middle; - font-family: Georgia; +#ruler path.planimeter { + fill: lightblue; + fill-rule: evenodd; + fill-opacity: 0.5; + stroke: #737373; } #militaryOptionsTable select { - border: 1px solid #d4d4d4; + border: 1px solid #d4d4d4; } #militaryOptionsTable input { - width: 9em; - border: 1px solid #d4d4d4; + width: 9em; + border: 1px solid #d4d4d4; } #militaryOptionsTable input[type="number"] { - width: 4em; + width: 4em; } #militaryOptionsTable button { - width: 100%; + 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: 2em; + 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; +.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; + 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; +#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 1em; - max-height: 80vh; - overflow: auto; +#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: 1.2em; - margin: 1em 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: .9em; - cursor: pointer; + font-size: 0.9em; + cursor: pointer; } #prompt { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - max-width: 22em; - background-color: #fff; - padding: 1.2em; - border: solid 1px #000; - font-size: 1.2em; - z-index: 1000; + 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 .6em 0; - font-weight: bold; - font-family: sans-serif; + padding: 0 0 0.6em 0; + font-weight: bold; + font-family: var(--sans-serif); } #mapOverlay { - position: absolute; - display: flex; - top: 0; - left: 0; - right: 0; - bottom: 0; - align-items: center; - justify-content: center; - z-index: 10; - pointer-events: none; - text-align: center; - background: rgba(0, 0, 0, .5); - font-size: 2.4em; - color: #fff5da; - text-shadow: 0px 1px 4px #4c3a35; + 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: .7; + stroke-opacity: 0.5; shape-rendering: crispEdges; } @@ -2194,73 +2304,120 @@ svg.button { stroke-width: 0; } -.pell { - border: 1px solid hsla(0,0%,4%,.1) -} - -.pell,.pell-content { - box-sizing: border-box -} - -.pell-content { - height: 14em; - outline: 0; - overflow-y: auto; - padding: .6em; - font-family: Copperplate, monospace; - background-color: #fff; - border: 1px solid #dedede; -} - -.pell-actionbar { - background-color: #fff; - border: 1px solid #dedede; - border-bottom: 0; -} - -.pell-button { - background-color: transparent; - border: none; - cursor: pointer; - height: 30px; - outline: 0; - width: 30px; - vertical-align: bottom -} - -.pell-button-selected { - background-color: #f0f0f0 -} - #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 2218f7a5..5a18e579 100644 --- a/index.html +++ b/index.html @@ -1,4051 +1,8184 @@ - - - - Azgaar's Fantasy Map Generator - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Azgaar's Fantasy Map Generator + + + + - - - - - - - - - + + + - - - - - - - - - + + + + + + - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + - - - - - - ? - + + + - - - - - - - - - - - - - -
-
Azgaar's
-
Fantasy Map Generator
-
v. 1.5
-

LOADING...

-
- -
- -
- - -
- - - -
- -
-
- -
-
- -
- -