diff --git a/.docker/default.conf b/.docker/default.conf new file mode 100644 index 00000000..9d3a7b22 --- /dev/null +++ b/.docker/default.conf @@ -0,0 +1,21 @@ +server { + listen 80; + listen [::]:80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html; + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src data: 'self'"; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Frame-Options "DENY"; + add_header X-Content-Type-Options nosniff; + add_header Referrer-Policy "strict-origin"; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + +} diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..f01a2390 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms +github: Azgaar +patreon: Azgaar diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..d4407a32 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Report a problem +title: '' +labels: pending review +assignees: Azgaar + +--- + + +**Describe the bug** + + +**Steps to reproduce** + +1. Click on ... +2. Type ... +3. See the ... + +**Expected behavior** + + +**.map file** + + +**Screenshots** + + +**System** + + - Version: ... + - Browser: ... + - OS: ... diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..29ab55e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,19 @@ +--- +name: Feature request +about: Suggest an idea +title: '' +labels: pending review +assignees: Azgaar + +--- + +<-- BEFORE CREATING PLEASE CHECK THE TO-DO LIST--> +<-- https://trello.com/b/7x832DG4/fantasy-map-generator ->> +**Problem** +<-- Is your feature request related to a problem? Please describe. Ex.: I'm always frustrated when ... --> + +**Solution** +<-- A clear and concise description of what you want to happen and ideas on how it can be implemented. Screenshots are welcomed --> + +**Alternatives** +<-- A clear and concise description of any alternative solutions or features you've considered --> diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..698d23ae --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,89 @@ +# Fantasy Map Generator + +Azgaar's Fantasy Map Generator is a client-side JavaScript web application for creating fantasy maps. It generates detailed fantasy worlds with countries, cities, rivers, biomes, and cultural elements. + +Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here. + +## Working Effectively + +- **CRITICAL**: This is a static web application - NO build process needed. No npm install, no compilation, no bundling. +- Run the application using HTTP server (required - cannot run with file:// protocol): + - `python3 -m http.server 8000` - takes 2-3 seconds to start +- Access at: `http://localhost:8000` + +## Validation + +- Always manually validate any changes by: + 1. Starting the HTTP server (NEVER CANCEL - wait for full startup) + 2. Navigate to the application in browser + 3. Click the "►" button to open the menu and generate a new map + 4. **CRITICAL VALIDATION**: Verify the map generates with countries, cities, roads, and geographic features + 5. Test UI interaction: click "Layers" button, verify layer controls work + 6. Test regeneration: click "New Map!" button, verify new map generates correctly +- **Known Issues**: Google Analytics and font loading errors are normal (blocked external resources) + +## Repository Structure + +### Core Files + +- `index.html` - Main application entry point +- `main.js` - Core application logic +- `versioning.js` - Version management and update handling + +### Key Directories + +- `modules/` - core functionality modules: + - `modules/ui/` - UI components (editors, tools, style management) + - `modules/dynamic/` - runtime modules (export, installation) + - `modules/renderers/` - drawing and rendering logic +- `utils/` - utility libraries (math, arrays, strings, etc.) +- `styles/` - visual style presets (JSON files) +- `libs/` - Third-party libraries (D3.js, TinyMCE, etc.) +- `images/` - backgrounds, UI elements +- `charges/` - heraldic symbols and coat of arms elements +- `config/` - Heightmap templates and configurations +- `heightmaps/` - Terrain generation data + +## Common Tasks + +### Making Code Changes + +1. Edit JavaScript files directly (no compilation needed) +2. Refresh browser to see changes immediately +3. **ALWAYS test map generation** after making changes +4. Update version in `versioning.js` for all changes +5. Update file hashes in `index.html` for changed files (format: `file.js?v=1.108.1`) + +### Debugging Map Generation + +- Open browser developer tools console +- Look for timing logs, e.g. "TOTAL: ~0.76s" +- Map generation logs show each step (heightmap, rivers, states, etc.) +- Error messages will indicate specific generation failures + +### Testing Different Map Types + +- Use "New Map!" button for quick regeneration +- Access "Layers" menu to change map visualization +- Available presets: Political, Cultural, Religions, Biomes, Heightmap, Physical, Military + +## Troubleshooting + +### Application Won't Load + +- Ensure using HTTP server (not file://) +- Check console for JavaScript errors +- Verify all files are present in repository + +### Map Generation Fails + +- Check browser console for error messages +- Look for specific module failures in generation logs +- Try refreshing page and generating new map + +### Performance Issues + +- Map generation should complete in ~1 second for standard configurations +- If slower, check browser console for errors + +Remember: This is a sophisticated client-side application that generates complete fantasy worlds with political systems, geography, cultures, and detailed cartographic elements. Always validate that your changes preserve the core map generation functionality. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..acedeb18 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,23 @@ +# Description + + + +# Type of change + + + +- [ ] Bug fix +- [ ] New feature +- [ ] Refactoring / style +- [ ] Documentation update / chore +- [ ] Other (please describe) + +# Versioning + + + +- [ ] Version is updated +- [ ] Changed files hash is updated diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..b0a273f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.vscode +.idea +/node_modules +/dist +/coverage diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..6afdcc7d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.1.0", + "configurations": [ + { + "name": "Debug", + "type": "chrome", + "request": "launch", + "file": "${workspaceFolder}/index.html" + } + ] +} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..23cfdd81 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,108 @@ +# Contributor Code of Conduct + +We as members, contributors, and leaders agree to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* Vocal support of agressive behaviour, agressive communities or countries +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +azgaar.fmg@yandex.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 2. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 3. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is based on [Contributor Covenant](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html), +version 2.0. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..fbf5a425 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM nginx:stable-alpine + +# Copy the contents of the repo to the container +COPY . /usr/share/nginx/html + +# Move the customized nginx config file to the nginx folder +RUN mv /usr/share/nginx/html/.docker/default.conf /etc/nginx/conf.d/default.conf diff --git a/LICENSE b/LICENSE index 94a9ed02..4b0e677e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,674 +1,25 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. +MIT License + +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 +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +You can produce, without restrictions, any derivative works from the original +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, +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. diff --git a/README.md b/README.md index f662ac3c..3ab245b2 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,29 @@ # Fantasy Map Generator -Azgaar's _Fantasy Map Generator_. Based on [D3](https://d3js.org) Voronoi diagram rendered in svg. +Azgaar's _Fantasy Map Generator_ is a free web application that helps fantasy writers, game masters, and cartographers create and edit fantasy maps. -Project goal is a procedurally generated map for my *Medieval Dynasty* simulator. Map should be interactive, scalable, fast and plausible. Initial intend was to place at least 500 burgs within 7 cultural areas and imagined land area about 1 million km2. As of now all these parameters are customizable. +Link: [azgaar.github.io/Fantasy-Map-Generator](https://azgaar.github.io/Fantasy-Map-Generator). -[![alt tag](https://i0.wp.com/azgaar.files.wordpress.com/2017/03/80k-part.png)](https://azgaar.wordpress.com) +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). -Project is under development, check out the demo [here](https://azgaar.github.io/Fantasy-Map-Generator). Refer to [the project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for a quick guidance. The the previous versions see the [changelog](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog). If you find the Demo performance low, open the page in a smaller window and use the graph size = 1. +[![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) -Some details are covered in my blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com), you may also keep an eye on my [devboard](https://trello.com/b/7x832DG4/fantasy-map-generator). Comments and ideas are *highly* welcomed, kindly contact me via [email](mailto:maxganiev@yandex.ru). I would also like to see your completed or work in progress maps. For bug reports and change requests please use the project [issues page](https://github.com/Azgaar/Fantasy-Map-Generator/issues). +[![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://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 [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. + +Contact me via [email](mailto:azgaar.fmg@yandex.com) if you have non-public suggestions. For bug reports please use [GitHub issues](https://github.com/Azgaar/Fantasy-Map-Generator/issues) or _#fmg-bugs_ channel on Discord. If you are facing performance issues, please read [the tips](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Tips#performance-tips). + +Pull requests are highly welcomed. The codebase is messy and requires re-design. I will appreciate if you start with minor changes. Check out the [data model](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Data-model) before contributing. + +You can support the project on [Patreon](https://www.patreon.com/azgaar). _Inspiration:_ -* Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain) +- Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain) -* Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation) +- Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation) -* Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com) +- Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com) diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c7418817..00000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-slate \ No newline at end of file diff --git a/charges/agnusDei.svg b/charges/agnusDei.svg new file mode 100644 index 00000000..60ea9d87 --- /dev/null +++ b/charges/agnusDei.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/anchor.svg b/charges/anchor.svg new file mode 100644 index 00000000..59678314 --- /dev/null +++ b/charges/anchor.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/angel.svg b/charges/angel.svg new file mode 100644 index 00000000..e6f3ba3e --- /dev/null +++ b/charges/angel.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/annulet.svg b/charges/annulet.svg new file mode 100644 index 00000000..b3dad13d --- /dev/null +++ b/charges/annulet.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/anvil.svg b/charges/anvil.svg new file mode 100644 index 00000000..2b6b0868 --- /dev/null +++ b/charges/anvil.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/charges/apple.svg b/charges/apple.svg new file mode 100644 index 00000000..6679428d --- /dev/null +++ b/charges/apple.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/arbalest.svg b/charges/arbalest.svg new file mode 100644 index 00000000..38adac50 --- /dev/null +++ b/charges/arbalest.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/arbalest2.svg b/charges/arbalest2.svg new file mode 100644 index 00000000..be9b1a6a --- /dev/null +++ b/charges/arbalest2.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/archer.svg b/charges/archer.svg new file mode 100644 index 00000000..00891c1b --- /dev/null +++ b/charges/archer.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/armEmbowedHoldingSabre.svg b/charges/armEmbowedHoldingSabre.svg new file mode 100644 index 00000000..2fbae9f6 --- /dev/null +++ b/charges/armEmbowedHoldingSabre.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/armEmbowedVambraced.svg b/charges/armEmbowedVambraced.svg new file mode 100644 index 00000000..ac1422b5 --- /dev/null +++ b/charges/armEmbowedVambraced.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/armEmbowedVambracedHoldingSword.svg b/charges/armEmbowedVambracedHoldingSword.svg new file mode 100644 index 00000000..d00d8bab --- /dev/null +++ b/charges/armEmbowedVambracedHoldingSword.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/armillarySphere.svg b/charges/armillarySphere.svg new file mode 100644 index 00000000..45d09b8d --- /dev/null +++ b/charges/armillarySphere.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/arrow.svg b/charges/arrow.svg new file mode 100644 index 00000000..2135169f --- /dev/null +++ b/charges/arrow.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/arrowsSheaf.svg b/charges/arrowsSheaf.svg new file mode 100644 index 00000000..4b879e10 --- /dev/null +++ b/charges/arrowsSheaf.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/attire.svg b/charges/attire.svg new file mode 100644 index 00000000..99427a60 --- /dev/null +++ b/charges/attire.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/axe.svg b/charges/axe.svg new file mode 100644 index 00000000..e1608145 --- /dev/null +++ b/charges/axe.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/badgerStatant.svg b/charges/badgerStatant.svg new file mode 100644 index 00000000..29cd5f39 --- /dev/null +++ b/charges/badgerStatant.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/banner.svg b/charges/banner.svg new file mode 100644 index 00000000..8ca47b97 --- /dev/null +++ b/charges/banner.svg @@ -0,0 +1,35 @@ + + + + diff --git a/charges/basilisk.svg b/charges/basilisk.svg new file mode 100644 index 00000000..b2755dff --- /dev/null +++ b/charges/basilisk.svg @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bearPassant.svg b/charges/bearPassant.svg new file mode 100644 index 00000000..847ea7bd --- /dev/null +++ b/charges/bearPassant.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bearRampant.svg b/charges/bearRampant.svg new file mode 100644 index 00000000..418d6fb3 --- /dev/null +++ b/charges/bearRampant.svg @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bee.svg b/charges/bee.svg new file mode 100644 index 00000000..7f3a0069 --- /dev/null +++ b/charges/bee.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bell.svg b/charges/bell.svg new file mode 100644 index 00000000..307b6493 --- /dev/null +++ b/charges/bell.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/billet.svg b/charges/billet.svg new file mode 100644 index 00000000..9482f5a7 --- /dev/null +++ b/charges/billet.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/boarHeadErased.svg b/charges/boarHeadErased.svg new file mode 100644 index 00000000..08348586 --- /dev/null +++ b/charges/boarHeadErased.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/boarRampant.svg b/charges/boarRampant.svg new file mode 100644 index 00000000..436fb439 --- /dev/null +++ b/charges/boarRampant.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/boat.svg b/charges/boat.svg new file mode 100644 index 00000000..b50f6194 --- /dev/null +++ b/charges/boat.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/charges/boat2.svg b/charges/boat2.svg new file mode 100644 index 00000000..f3e37a5b --- /dev/null +++ b/charges/boat2.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bone.svg b/charges/bone.svg new file mode 100644 index 00000000..27a9e410 --- /dev/null +++ b/charges/bone.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/bookClosed.svg b/charges/bookClosed.svg new file mode 100644 index 00000000..0cd74341 --- /dev/null +++ b/charges/bookClosed.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bookClosed2.svg b/charges/bookClosed2.svg new file mode 100644 index 00000000..bf8d2519 --- /dev/null +++ b/charges/bookClosed2.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bookOpen.svg b/charges/bookOpen.svg new file mode 100644 index 00000000..62f1c6fc --- /dev/null +++ b/charges/bookOpen.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bow.svg b/charges/bow.svg new file mode 100644 index 00000000..b1f2c8ec --- /dev/null +++ b/charges/bow.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/bowWithArrow.svg b/charges/bowWithArrow.svg new file mode 100644 index 00000000..12d7f9ff --- /dev/null +++ b/charges/bowWithArrow.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/charges/bowWithThreeArrows.svg b/charges/bowWithThreeArrows.svg new file mode 100644 index 00000000..0efc30f2 --- /dev/null +++ b/charges/bowWithThreeArrows.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bridge.svg b/charges/bridge.svg new file mode 100644 index 00000000..f5ce588e --- /dev/null +++ b/charges/bridge.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bridge2.svg b/charges/bridge2.svg new file mode 100644 index 00000000..6d3dfab5 --- /dev/null +++ b/charges/bridge2.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/bucket.svg b/charges/bucket.svg new file mode 100644 index 00000000..56c7e83c --- /dev/null +++ b/charges/bucket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/buckle.svg b/charges/buckle.svg new file mode 100644 index 00000000..b83ba97d --- /dev/null +++ b/charges/buckle.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/bugleHorn.svg b/charges/bugleHorn.svg new file mode 100644 index 00000000..a7985ca6 --- /dev/null +++ b/charges/bugleHorn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/bugleHorn2.svg b/charges/bugleHorn2.svg new file mode 100644 index 00000000..cf5bcaa7 --- /dev/null +++ b/charges/bugleHorn2.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/bullHeadCaboshed.svg b/charges/bullHeadCaboshed.svg new file mode 100644 index 00000000..d3ddeccc --- /dev/null +++ b/charges/bullHeadCaboshed.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/bullPassant.svg b/charges/bullPassant.svg new file mode 100644 index 00000000..0314b64e --- /dev/null +++ b/charges/bullPassant.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/butterfly.svg b/charges/butterfly.svg new file mode 100644 index 00000000..2c301fcf --- /dev/null +++ b/charges/butterfly.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/camel.svg b/charges/camel.svg new file mode 100644 index 00000000..e2dd8bb9 --- /dev/null +++ b/charges/camel.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/cancer.svg b/charges/cancer.svg new file mode 100644 index 00000000..a8bf102c --- /dev/null +++ b/charges/cancer.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/charges/cannon.svg b/charges/cannon.svg new file mode 100644 index 00000000..05e88b25 --- /dev/null +++ b/charges/cannon.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/caravel.svg b/charges/caravel.svg new file mode 100644 index 00000000..9eb57671 --- /dev/null +++ b/charges/caravel.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/carreau.svg b/charges/carreau.svg new file mode 100644 index 00000000..bfeeb049 --- /dev/null +++ b/charges/carreau.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/castle.svg b/charges/castle.svg new file mode 100644 index 00000000..43a2fa38 --- /dev/null +++ b/charges/castle.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/castle2.svg b/charges/castle2.svg new file mode 100644 index 00000000..5f12a8aa --- /dev/null +++ b/charges/castle2.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/catPassantGuardant.svg b/charges/catPassantGuardant.svg new file mode 100644 index 00000000..b49dc820 --- /dev/null +++ b/charges/catPassantGuardant.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/cavalier.svg b/charges/cavalier.svg new file mode 100644 index 00000000..7bfad7ac --- /dev/null +++ b/charges/cavalier.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/centaur.svg b/charges/centaur.svg new file mode 100644 index 00000000..f4ddeb22 --- /dev/null +++ b/charges/centaur.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/chain.svg b/charges/chain.svg new file mode 100644 index 00000000..cfe4a3bb --- /dev/null +++ b/charges/chain.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/chalice.svg b/charges/chalice.svg new file mode 100644 index 00000000..0f4f95f6 --- /dev/null +++ b/charges/chalice.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/charges/cinquefoil.svg b/charges/cinquefoil.svg new file mode 100644 index 00000000..49db293e --- /dev/null +++ b/charges/cinquefoil.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/charges/cock.svg b/charges/cock.svg new file mode 100644 index 00000000..4b100034 --- /dev/null +++ b/charges/cock.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/column.svg b/charges/column.svg new file mode 100644 index 00000000..38d8b2a0 --- /dev/null +++ b/charges/column.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/comet.svg b/charges/comet.svg new file mode 100644 index 00000000..096ddb67 --- /dev/null +++ b/charges/comet.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/compassRose.svg b/charges/compassRose.svg new file mode 100644 index 00000000..dec495cc --- /dev/null +++ b/charges/compassRose.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/cossack.svg b/charges/cossack.svg new file mode 100644 index 00000000..f5cf75ed --- /dev/null +++ b/charges/cossack.svg @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/cowHorns.svg b/charges/cowHorns.svg new file mode 100644 index 00000000..74378210 --- /dev/null +++ b/charges/cowHorns.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/cowStatant.svg b/charges/cowStatant.svg new file mode 100644 index 00000000..66b46823 --- /dev/null +++ b/charges/cowStatant.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/crescent.svg b/charges/crescent.svg new file mode 100644 index 00000000..9181995b --- /dev/null +++ b/charges/crescent.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/crocodile.svg b/charges/crocodile.svg new file mode 100644 index 00000000..442e456d --- /dev/null +++ b/charges/crocodile.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/crosier.svg b/charges/crosier.svg new file mode 100644 index 00000000..631ef998 --- /dev/null +++ b/charges/crosier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/crossAnkh.svg b/charges/crossAnkh.svg new file mode 100644 index 00000000..6bbac70e --- /dev/null +++ b/charges/crossAnkh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossArrowed.svg b/charges/crossArrowed.svg new file mode 100644 index 00000000..ff4b6c02 --- /dev/null +++ b/charges/crossArrowed.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/charges/crossAvellane.svg b/charges/crossAvellane.svg new file mode 100644 index 00000000..303e7f72 --- /dev/null +++ b/charges/crossAvellane.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/charges/crossBiparted.svg b/charges/crossBiparted.svg new file mode 100644 index 00000000..0e6ac5f8 --- /dev/null +++ b/charges/crossBiparted.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossBottony.svg b/charges/crossBottony.svg new file mode 100644 index 00000000..2d246b29 --- /dev/null +++ b/charges/crossBottony.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossBurgundy.svg b/charges/crossBurgundy.svg new file mode 100644 index 00000000..cb681714 --- /dev/null +++ b/charges/crossBurgundy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossCalvary.svg b/charges/crossCalvary.svg new file mode 100644 index 00000000..dd0447b5 --- /dev/null +++ b/charges/crossCalvary.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/crossCarolingian.svg b/charges/crossCarolingian.svg new file mode 100644 index 00000000..761464a7 --- /dev/null +++ b/charges/crossCarolingian.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/crossCeltic.svg b/charges/crossCeltic.svg new file mode 100644 index 00000000..6abe10fe --- /dev/null +++ b/charges/crossCeltic.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossCeltic2.svg b/charges/crossCeltic2.svg new file mode 100644 index 00000000..84628911 --- /dev/null +++ b/charges/crossCeltic2.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossCercelee.svg b/charges/crossCercelee.svg new file mode 100644 index 00000000..2b8bff16 --- /dev/null +++ b/charges/crossCercelee.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossClechy.svg b/charges/crossClechy.svg new file mode 100644 index 00000000..c246534e --- /dev/null +++ b/charges/crossClechy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossDouble.svg b/charges/crossDouble.svg new file mode 100644 index 00000000..1a0e4bc8 --- /dev/null +++ b/charges/crossDouble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/crossErminee.svg b/charges/crossErminee.svg new file mode 100644 index 00000000..1def3830 --- /dev/null +++ b/charges/crossErminee.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossFitchy.svg b/charges/crossFitchy.svg new file mode 100644 index 00000000..954b8e70 --- /dev/null +++ b/charges/crossFitchy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossFleury.svg b/charges/crossFleury.svg new file mode 100644 index 00000000..d617a15d --- /dev/null +++ b/charges/crossFleury.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossFormee.svg b/charges/crossFormee.svg new file mode 100644 index 00000000..efef99d4 --- /dev/null +++ b/charges/crossFormee.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossFormee2.svg b/charges/crossFormee2.svg new file mode 100644 index 00000000..2309e494 --- /dev/null +++ b/charges/crossFormee2.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossFourchy.svg b/charges/crossFourchy.svg new file mode 100644 index 00000000..9308a143 --- /dev/null +++ b/charges/crossFourchy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossGamma.svg b/charges/crossGamma.svg new file mode 100644 index 00000000..d2da6490 --- /dev/null +++ b/charges/crossGamma.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossHummetty.svg b/charges/crossHummetty.svg new file mode 100644 index 00000000..e2676ab2 --- /dev/null +++ b/charges/crossHummetty.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossJerusalem.svg b/charges/crossJerusalem.svg new file mode 100644 index 00000000..54ba95dc --- /dev/null +++ b/charges/crossJerusalem.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossLatin.svg b/charges/crossLatin.svg new file mode 100644 index 00000000..16f60138 --- /dev/null +++ b/charges/crossLatin.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossMaltese.svg b/charges/crossMaltese.svg new file mode 100644 index 00000000..5718dacf --- /dev/null +++ b/charges/crossMaltese.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossMoline.svg b/charges/crossMoline.svg new file mode 100644 index 00000000..97f3b918 --- /dev/null +++ b/charges/crossMoline.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossOccitan.svg b/charges/crossOccitan.svg new file mode 100644 index 00000000..15fe7587 --- /dev/null +++ b/charges/crossOccitan.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossOrthodox.svg b/charges/crossOrthodox.svg new file mode 100644 index 00000000..9519f84d --- /dev/null +++ b/charges/crossOrthodox.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossPatonce.svg b/charges/crossPatonce.svg new file mode 100644 index 00000000..aaaec339 --- /dev/null +++ b/charges/crossPatonce.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossPatriarchal.svg b/charges/crossPatriarchal.svg new file mode 100644 index 00000000..12338bc2 --- /dev/null +++ b/charges/crossPatriarchal.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossPattee.svg b/charges/crossPattee.svg new file mode 100644 index 00000000..1c3bf761 --- /dev/null +++ b/charges/crossPattee.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossPatteeAlisee.svg b/charges/crossPatteeAlisee.svg new file mode 100644 index 00000000..801e7113 --- /dev/null +++ b/charges/crossPatteeAlisee.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossPommy.svg b/charges/crossPommy.svg new file mode 100644 index 00000000..da002347 --- /dev/null +++ b/charges/crossPommy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossPotent.svg b/charges/crossPotent.svg new file mode 100644 index 00000000..cc3bb92f --- /dev/null +++ b/charges/crossPotent.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossSaltire.svg b/charges/crossSaltire.svg new file mode 100644 index 00000000..8798ba45 --- /dev/null +++ b/charges/crossSaltire.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossSantiago.svg b/charges/crossSantiago.svg new file mode 100644 index 00000000..7e510a90 --- /dev/null +++ b/charges/crossSantiago.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/crossTau.svg b/charges/crossTau.svg new file mode 100644 index 00000000..0789faf5 --- /dev/null +++ b/charges/crossTau.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossTemplar.svg b/charges/crossTemplar.svg new file mode 100644 index 00000000..9c33613c --- /dev/null +++ b/charges/crossTemplar.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossTriquetra.svg b/charges/crossTriquetra.svg new file mode 100644 index 00000000..024225c1 --- /dev/null +++ b/charges/crossTriquetra.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/crossVoided.svg b/charges/crossVoided.svg new file mode 100644 index 00000000..0fa95bd7 --- /dev/null +++ b/charges/crossVoided.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/crossedBones.svg b/charges/crossedBones.svg new file mode 100644 index 00000000..3b06442f --- /dev/null +++ b/charges/crossedBones.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/crosslet.svg b/charges/crosslet.svg new file mode 100644 index 00000000..645b68a3 --- /dev/null +++ b/charges/crosslet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/crown.svg b/charges/crown.svg new file mode 100644 index 00000000..00dbbacf --- /dev/null +++ b/charges/crown.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/crown2.svg b/charges/crown2.svg new file mode 100644 index 00000000..f06a106e --- /dev/null +++ b/charges/crown2.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/deerHeadCaboshed.svg b/charges/deerHeadCaboshed.svg new file mode 100644 index 00000000..aca87f99 --- /dev/null +++ b/charges/deerHeadCaboshed.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/delf.svg b/charges/delf.svg new file mode 100644 index 00000000..227bd04f --- /dev/null +++ b/charges/delf.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/dolphin.svg b/charges/dolphin.svg new file mode 100644 index 00000000..be5b00bd --- /dev/null +++ b/charges/dolphin.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/donkeyHeadCaboshed.svg b/charges/donkeyHeadCaboshed.svg new file mode 100644 index 00000000..da5aee0a --- /dev/null +++ b/charges/donkeyHeadCaboshed.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/dove.svg b/charges/dove.svg new file mode 100644 index 00000000..7406a6ec --- /dev/null +++ b/charges/dove.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/doveDisplayed.svg b/charges/doveDisplayed.svg new file mode 100644 index 00000000..35bd14d6 --- /dev/null +++ b/charges/doveDisplayed.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/dragonPassant.svg b/charges/dragonPassant.svg new file mode 100644 index 00000000..b8fbc58e --- /dev/null +++ b/charges/dragonPassant.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/dragonRampant.svg b/charges/dragonRampant.svg new file mode 100644 index 00000000..6ff64c2a --- /dev/null +++ b/charges/dragonRampant.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/dragonfly.svg b/charges/dragonfly.svg new file mode 100644 index 00000000..c8b501ca --- /dev/null +++ b/charges/dragonfly.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/charges/drakkar.svg b/charges/drakkar.svg new file mode 100644 index 00000000..f36c3c4d --- /dev/null +++ b/charges/drakkar.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/drawingCompass.svg b/charges/drawingCompass.svg new file mode 100644 index 00000000..65a252d3 --- /dev/null +++ b/charges/drawingCompass.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/charges/drum.svg b/charges/drum.svg new file mode 100644 index 00000000..bd8fd638 --- /dev/null +++ b/charges/drum.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/duck.svg b/charges/duck.svg new file mode 100644 index 00000000..940c3e4d --- /dev/null +++ b/charges/duck.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/eagle.svg b/charges/eagle.svg new file mode 100644 index 00000000..c52fd495 --- /dev/null +++ b/charges/eagle.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/eagleTwoHeads.svg b/charges/eagleTwoHeads.svg new file mode 100644 index 00000000..cc8ac124 --- /dev/null +++ b/charges/eagleTwoHeads.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/earOfWheat.svg b/charges/earOfWheat.svg new file mode 100644 index 00000000..a1b3072c --- /dev/null +++ b/charges/earOfWheat.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/elephant.svg b/charges/elephant.svg new file mode 100644 index 00000000..fed4c13f --- /dev/null +++ b/charges/elephant.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/elephantHeadErased.svg b/charges/elephantHeadErased.svg new file mode 100644 index 00000000..f521413b --- /dev/null +++ b/charges/elephantHeadErased.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/escallop.svg b/charges/escallop.svg new file mode 100644 index 00000000..4fda9dda --- /dev/null +++ b/charges/escallop.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/charges/estoile.svg b/charges/estoile.svg new file mode 100644 index 00000000..6966ccbc --- /dev/null +++ b/charges/estoile.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/charges/falchion.svg b/charges/falchion.svg new file mode 100644 index 00000000..ccb71d3d --- /dev/null +++ b/charges/falchion.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/falcon.svg b/charges/falcon.svg new file mode 100644 index 00000000..5e4cebd5 --- /dev/null +++ b/charges/falcon.svg @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/fan.svg b/charges/fan.svg new file mode 100644 index 00000000..d7504ac6 --- /dev/null +++ b/charges/fan.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/charges/fasces.svg b/charges/fasces.svg new file mode 100644 index 00000000..71e27285 --- /dev/null +++ b/charges/fasces.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/feather.svg b/charges/feather.svg new file mode 100644 index 00000000..0be55bf5 --- /dev/null +++ b/charges/feather.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/flamberge.svg b/charges/flamberge.svg new file mode 100644 index 00000000..ab9d2277 --- /dev/null +++ b/charges/flamberge.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/flangedMace.svg b/charges/flangedMace.svg new file mode 100644 index 00000000..901d942f --- /dev/null +++ b/charges/flangedMace.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/fleurDeLis.svg b/charges/fleurDeLis.svg new file mode 100644 index 00000000..2583e48f --- /dev/null +++ b/charges/fleurDeLis.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/fly.svg b/charges/fly.svg new file mode 100644 index 00000000..9c880f72 --- /dev/null +++ b/charges/fly.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/foot.svg b/charges/foot.svg new file mode 100644 index 00000000..22963e5b --- /dev/null +++ b/charges/foot.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/fountain.svg b/charges/fountain.svg new file mode 100644 index 00000000..1ed8ac67 --- /dev/null +++ b/charges/fountain.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/charges/frog.svg b/charges/frog.svg new file mode 100644 index 00000000..392d3d05 --- /dev/null +++ b/charges/frog.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/fusil.svg b/charges/fusil.svg new file mode 100644 index 00000000..eac10ed4 --- /dev/null +++ b/charges/fusil.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/garb.svg b/charges/garb.svg new file mode 100644 index 00000000..fbefacd8 --- /dev/null +++ b/charges/garb.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/gauntlet.svg b/charges/gauntlet.svg new file mode 100644 index 00000000..f00a03eb --- /dev/null +++ b/charges/gauntlet.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/gear.svg b/charges/gear.svg new file mode 100644 index 00000000..2d128dfb --- /dev/null +++ b/charges/gear.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/goat.svg b/charges/goat.svg new file mode 100644 index 00000000..721c3f15 --- /dev/null +++ b/charges/goat.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/goutte.svg b/charges/goutte.svg new file mode 100644 index 00000000..40f23183 --- /dev/null +++ b/charges/goutte.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/grapeBunch.svg b/charges/grapeBunch.svg new file mode 100644 index 00000000..38d4693f --- /dev/null +++ b/charges/grapeBunch.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/grapeBunch2.svg b/charges/grapeBunch2.svg new file mode 100644 index 00000000..0af7b6a6 --- /dev/null +++ b/charges/grapeBunch2.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/grenade.svg b/charges/grenade.svg new file mode 100644 index 00000000..07436784 --- /dev/null +++ b/charges/grenade.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/greyhoundCourant.svg b/charges/greyhoundCourant.svg new file mode 100644 index 00000000..916d70cf --- /dev/null +++ b/charges/greyhoundCourant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/greyhoundRampant.svg b/charges/greyhoundRampant.svg new file mode 100644 index 00000000..cf607df5 --- /dev/null +++ b/charges/greyhoundRampant.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/greyhoundSejant.svg b/charges/greyhoundSejant.svg new file mode 100644 index 00000000..09efa81c --- /dev/null +++ b/charges/greyhoundSejant.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/griffinPassant.svg b/charges/griffinPassant.svg new file mode 100644 index 00000000..871b3591 --- /dev/null +++ b/charges/griffinPassant.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/griffinRampant.svg b/charges/griffinRampant.svg new file mode 100644 index 00000000..da2cfebe --- /dev/null +++ b/charges/griffinRampant.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/hand.svg b/charges/hand.svg new file mode 100644 index 00000000..91c279ae --- /dev/null +++ b/charges/hand.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/harp.svg b/charges/harp.svg new file mode 100644 index 00000000..91e5ee08 --- /dev/null +++ b/charges/harp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/hatchet.svg b/charges/hatchet.svg new file mode 100644 index 00000000..37052556 --- /dev/null +++ b/charges/hatchet.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/head.svg b/charges/head.svg new file mode 100644 index 00000000..08e36060 --- /dev/null +++ b/charges/head.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/headWreathed.svg b/charges/headWreathed.svg new file mode 100644 index 00000000..b6dafc64 --- /dev/null +++ b/charges/headWreathed.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/heart.svg b/charges/heart.svg new file mode 100644 index 00000000..56d0940c --- /dev/null +++ b/charges/heart.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/hedgehog.svg b/charges/hedgehog.svg new file mode 100644 index 00000000..c7a84caa --- /dev/null +++ b/charges/hedgehog.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/helmet.svg b/charges/helmet.svg new file mode 100644 index 00000000..9099c7c3 --- /dev/null +++ b/charges/helmet.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/helmetCorinthian.svg b/charges/helmetCorinthian.svg new file mode 100644 index 00000000..3ccd9cdd --- /dev/null +++ b/charges/helmetCorinthian.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/helmetGreat.svg b/charges/helmetGreat.svg new file mode 100644 index 00000000..b7a7bf49 --- /dev/null +++ b/charges/helmetGreat.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/helmetZischagge.svg b/charges/helmetZischagge.svg new file mode 100644 index 00000000..8985d197 --- /dev/null +++ b/charges/helmetZischagge.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/heron.svg b/charges/heron.svg new file mode 100644 index 00000000..4893b082 --- /dev/null +++ b/charges/heron.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/hindStatant.svg b/charges/hindStatant.svg new file mode 100644 index 00000000..3f9cc429 --- /dev/null +++ b/charges/hindStatant.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/hook.svg b/charges/hook.svg new file mode 100644 index 00000000..d5679f64 --- /dev/null +++ b/charges/hook.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/horseHeadCouped.svg b/charges/horseHeadCouped.svg new file mode 100644 index 00000000..8c455c23 --- /dev/null +++ b/charges/horseHeadCouped.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/horsePassant.svg b/charges/horsePassant.svg new file mode 100644 index 00000000..b2361b84 --- /dev/null +++ b/charges/horsePassant.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/horseRampant.svg b/charges/horseRampant.svg new file mode 100644 index 00000000..be7fee6c --- /dev/null +++ b/charges/horseRampant.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/horseSalient.svg b/charges/horseSalient.svg new file mode 100644 index 00000000..21b5db48 --- /dev/null +++ b/charges/horseSalient.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/horseshoe.svg b/charges/horseshoe.svg new file mode 100644 index 00000000..3bd51f7a --- /dev/null +++ b/charges/horseshoe.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/hourglass.svg b/charges/hourglass.svg new file mode 100644 index 00000000..87e7930b --- /dev/null +++ b/charges/hourglass.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/key.svg b/charges/key.svg new file mode 100644 index 00000000..6fb883ea --- /dev/null +++ b/charges/key.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/ladder.svg b/charges/ladder.svg new file mode 100644 index 00000000..fc72f130 --- /dev/null +++ b/charges/ladder.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/charges/ladder2.svg b/charges/ladder2.svg new file mode 100644 index 00000000..5596e045 --- /dev/null +++ b/charges/ladder2.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/charges/ladybird.svg b/charges/ladybird.svg new file mode 100644 index 00000000..3cc1587e --- /dev/null +++ b/charges/ladybird.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lamb.svg b/charges/lamb.svg new file mode 100644 index 00000000..1d574b53 --- /dev/null +++ b/charges/lamb.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/lambPassantReguardant.svg b/charges/lambPassantReguardant.svg new file mode 100644 index 00000000..90884eb7 --- /dev/null +++ b/charges/lambPassantReguardant.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lanceHead.svg b/charges/lanceHead.svg new file mode 100644 index 00000000..255492db --- /dev/null +++ b/charges/lanceHead.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/lanceWithBanner.svg b/charges/lanceWithBanner.svg new file mode 100644 index 00000000..556e5ade --- /dev/null +++ b/charges/lanceWithBanner.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/laurelWreath.svg b/charges/laurelWreath.svg new file mode 100644 index 00000000..989e00c4 --- /dev/null +++ b/charges/laurelWreath.svg @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/laurelWreath2.svg b/charges/laurelWreath2.svg new file mode 100644 index 00000000..6dfb373e --- /dev/null +++ b/charges/laurelWreath2.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lighthouse.svg b/charges/lighthouse.svg new file mode 100644 index 00000000..b66938f5 --- /dev/null +++ b/charges/lighthouse.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/lionHeadCaboshed.svg b/charges/lionHeadCaboshed.svg new file mode 100644 index 00000000..63022fc0 --- /dev/null +++ b/charges/lionHeadCaboshed.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lionHeadErased.svg b/charges/lionHeadErased.svg new file mode 100644 index 00000000..7ed39c67 --- /dev/null +++ b/charges/lionHeadErased.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lionPassant.svg b/charges/lionPassant.svg new file mode 100644 index 00000000..7dd6b396 --- /dev/null +++ b/charges/lionPassant.svg @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lionPassantGuardant.svg b/charges/lionPassantGuardant.svg new file mode 100644 index 00000000..584e8835 --- /dev/null +++ b/charges/lionPassantGuardant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/lionRampant.svg b/charges/lionRampant.svg new file mode 100644 index 00000000..8aab2b09 --- /dev/null +++ b/charges/lionRampant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/lionSejant.svg b/charges/lionSejant.svg new file mode 100644 index 00000000..23ca98db --- /dev/null +++ b/charges/lionSejant.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lizard.svg b/charges/lizard.svg new file mode 100644 index 00000000..dc8dbf9d --- /dev/null +++ b/charges/lizard.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lochaberAxe.svg b/charges/lochaberAxe.svg new file mode 100644 index 00000000..cf09c61e --- /dev/null +++ b/charges/lochaberAxe.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/log.svg b/charges/log.svg new file mode 100644 index 00000000..387fad44 --- /dev/null +++ b/charges/log.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/lozenge.svg b/charges/lozenge.svg new file mode 100644 index 00000000..4cfb22c9 --- /dev/null +++ b/charges/lozenge.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/lozengeFaceted.svg b/charges/lozengeFaceted.svg new file mode 100644 index 00000000..63a575e3 --- /dev/null +++ b/charges/lozengeFaceted.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/charges/lozengePloye.svg b/charges/lozengePloye.svg new file mode 100644 index 00000000..0187c681 --- /dev/null +++ b/charges/lozengePloye.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/lute.svg b/charges/lute.svg new file mode 100644 index 00000000..c88cc397 --- /dev/null +++ b/charges/lute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/lymphad.svg b/charges/lymphad.svg new file mode 100644 index 00000000..457f10d7 --- /dev/null +++ b/charges/lymphad.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/lyre.svg b/charges/lyre.svg new file mode 100644 index 00000000..d89b8550 --- /dev/null +++ b/charges/lyre.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/charges/mace.svg b/charges/mace.svg new file mode 100644 index 00000000..a3f0e074 --- /dev/null +++ b/charges/mace.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/maces.svg b/charges/maces.svg new file mode 100644 index 00000000..93988b80 --- /dev/null +++ b/charges/maces.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/mallet.svg b/charges/mallet.svg new file mode 100644 index 00000000..ecb418f9 --- /dev/null +++ b/charges/mallet.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/mantle.svg b/charges/mantle.svg new file mode 100644 index 00000000..5493c30b --- /dev/null +++ b/charges/mantle.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/mapleLeaf.svg b/charges/mapleLeaf.svg new file mode 100644 index 00000000..93e63767 --- /dev/null +++ b/charges/mapleLeaf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/charges/martenCourant.svg b/charges/martenCourant.svg new file mode 100644 index 00000000..1760d038 --- /dev/null +++ b/charges/martenCourant.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/mascle.svg b/charges/mascle.svg new file mode 100644 index 00000000..b867e47a --- /dev/null +++ b/charges/mascle.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mastiffStatant.svg b/charges/mastiffStatant.svg new file mode 100644 index 00000000..14feb266 --- /dev/null +++ b/charges/mastiffStatant.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/millstone.svg b/charges/millstone.svg new file mode 100644 index 00000000..f8d523ca --- /dev/null +++ b/charges/millstone.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/charges/mitre.svg b/charges/mitre.svg new file mode 100644 index 00000000..1a20e002 --- /dev/null +++ b/charges/mitre.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/monk.svg b/charges/monk.svg new file mode 100644 index 00000000..8ede0359 --- /dev/null +++ b/charges/monk.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/moonInCrescent.svg b/charges/moonInCrescent.svg new file mode 100644 index 00000000..27fdb512 --- /dev/null +++ b/charges/moonInCrescent.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/mullet.svg b/charges/mullet.svg new file mode 100644 index 00000000..2658e971 --- /dev/null +++ b/charges/mullet.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mullet10.svg b/charges/mullet10.svg new file mode 100644 index 00000000..60ed608a --- /dev/null +++ b/charges/mullet10.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mullet4.svg b/charges/mullet4.svg new file mode 100644 index 00000000..37242f99 --- /dev/null +++ b/charges/mullet4.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mullet6.svg b/charges/mullet6.svg new file mode 100644 index 00000000..1a1972aa --- /dev/null +++ b/charges/mullet6.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mullet6Faceted.svg b/charges/mullet6Faceted.svg new file mode 100644 index 00000000..1ca0c335 --- /dev/null +++ b/charges/mullet6Faceted.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/mullet6Pierced.svg b/charges/mullet6Pierced.svg new file mode 100644 index 00000000..96d6f279 --- /dev/null +++ b/charges/mullet6Pierced.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mullet7.svg b/charges/mullet7.svg new file mode 100644 index 00000000..53321978 --- /dev/null +++ b/charges/mullet7.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mullet8.svg b/charges/mullet8.svg new file mode 100644 index 00000000..0239a883 --- /dev/null +++ b/charges/mullet8.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/mulletFaceted.svg b/charges/mulletFaceted.svg new file mode 100644 index 00000000..a43fe26e --- /dev/null +++ b/charges/mulletFaceted.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/mulletPierced.svg b/charges/mulletPierced.svg new file mode 100644 index 00000000..b469bf0c --- /dev/null +++ b/charges/mulletPierced.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/oak.svg b/charges/oak.svg new file mode 100644 index 00000000..b01da9b4 --- /dev/null +++ b/charges/oak.svg @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/orb.svg b/charges/orb.svg new file mode 100644 index 00000000..2d7354f5 --- /dev/null +++ b/charges/orb.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/ouroboros.svg b/charges/ouroboros.svg new file mode 100644 index 00000000..f0f39146 --- /dev/null +++ b/charges/ouroboros.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/owl.svg b/charges/owl.svg new file mode 100644 index 00000000..015a7f81 --- /dev/null +++ b/charges/owl.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/owlDisplayed.svg b/charges/owlDisplayed.svg new file mode 100644 index 00000000..353fe5e7 --- /dev/null +++ b/charges/owlDisplayed.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/palace.svg b/charges/palace.svg new file mode 100644 index 00000000..9e03dd4b --- /dev/null +++ b/charges/palace.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/palmTree.svg b/charges/palmTree.svg new file mode 100644 index 00000000..590d14a3 --- /dev/null +++ b/charges/palmTree.svg @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/parrot.svg b/charges/parrot.svg new file mode 100644 index 00000000..92d7dd10 --- /dev/null +++ b/charges/parrot.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/peacock.svg b/charges/peacock.svg new file mode 100644 index 00000000..064831f4 --- /dev/null +++ b/charges/peacock.svg @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/peacockInPride.svg b/charges/peacockInPride.svg new file mode 100644 index 00000000..b8b4f8c7 --- /dev/null +++ b/charges/peacockInPride.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pear.svg b/charges/pear.svg new file mode 100644 index 00000000..d421e208 --- /dev/null +++ b/charges/pear.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pegasus.svg b/charges/pegasus.svg new file mode 100644 index 00000000..5335022d --- /dev/null +++ b/charges/pegasus.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pike.svg b/charges/pike.svg new file mode 100644 index 00000000..812002b7 --- /dev/null +++ b/charges/pike.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/charges/pillar.svg b/charges/pillar.svg new file mode 100644 index 00000000..d9aa943f --- /dev/null +++ b/charges/pillar.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pincers.svg b/charges/pincers.svg new file mode 100644 index 00000000..2e91f728 --- /dev/null +++ b/charges/pincers.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/pineCone.svg b/charges/pineCone.svg new file mode 100644 index 00000000..c326f2a2 --- /dev/null +++ b/charges/pineCone.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pineTree.svg b/charges/pineTree.svg new file mode 100644 index 00000000..2abebe11 --- /dev/null +++ b/charges/pineTree.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/pique.svg b/charges/pique.svg new file mode 100644 index 00000000..06c5836e --- /dev/null +++ b/charges/pique.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/plaice.svg b/charges/plaice.svg new file mode 100644 index 00000000..8325d1ca --- /dev/null +++ b/charges/plaice.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/plough.svg b/charges/plough.svg new file mode 100644 index 00000000..7c1f42fc --- /dev/null +++ b/charges/plough.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/ploughshare.svg b/charges/ploughshare.svg new file mode 100644 index 00000000..45928f03 --- /dev/null +++ b/charges/ploughshare.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/porcupine.svg b/charges/porcupine.svg new file mode 100644 index 00000000..bdc53081 --- /dev/null +++ b/charges/porcupine.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/portcullis.svg b/charges/portcullis.svg new file mode 100644 index 00000000..de154326 --- /dev/null +++ b/charges/portcullis.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/pot.svg b/charges/pot.svg new file mode 100644 index 00000000..64cc0ff6 --- /dev/null +++ b/charges/pot.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/quatrefoil.svg b/charges/quatrefoil.svg new file mode 100644 index 00000000..ff33f762 --- /dev/null +++ b/charges/quatrefoil.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/charges/rabbitSejant.svg b/charges/rabbitSejant.svg new file mode 100644 index 00000000..c61e0a9b --- /dev/null +++ b/charges/rabbitSejant.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/raft.svg b/charges/raft.svg new file mode 100644 index 00000000..d5b728b4 --- /dev/null +++ b/charges/raft.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/charges/rake.svg b/charges/rake.svg new file mode 100644 index 00000000..6feed725 --- /dev/null +++ b/charges/rake.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/ramHeadErased.svg b/charges/ramHeadErased.svg new file mode 100644 index 00000000..c971f7b4 --- /dev/null +++ b/charges/ramHeadErased.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/ramPassant.svg b/charges/ramPassant.svg new file mode 100644 index 00000000..421e416c --- /dev/null +++ b/charges/ramPassant.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/ramsHorn.svg b/charges/ramsHorn.svg new file mode 100644 index 00000000..26585cc9 --- /dev/null +++ b/charges/ramsHorn.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/rapier.svg b/charges/rapier.svg new file mode 100644 index 00000000..fed83920 --- /dev/null +++ b/charges/rapier.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/ratRampant.svg b/charges/ratRampant.svg new file mode 100644 index 00000000..13c6746a --- /dev/null +++ b/charges/ratRampant.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/raven.svg b/charges/raven.svg new file mode 100644 index 00000000..6e3c4eca --- /dev/null +++ b/charges/raven.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/rhinoceros.svg b/charges/rhinoceros.svg new file mode 100644 index 00000000..1d43c4f4 --- /dev/null +++ b/charges/rhinoceros.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/ribbon1.svg b/charges/ribbon1.svg new file mode 100644 index 00000000..03bf3515 --- /dev/null +++ b/charges/ribbon1.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/ribbon2.svg b/charges/ribbon2.svg new file mode 100644 index 00000000..0f15bb04 --- /dev/null +++ b/charges/ribbon2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/ribbon3.svg b/charges/ribbon3.svg new file mode 100644 index 00000000..dd168991 --- /dev/null +++ b/charges/ribbon3.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/charges/ribbon4.svg b/charges/ribbon4.svg new file mode 100644 index 00000000..bab35959 --- /dev/null +++ b/charges/ribbon4.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/ribbon5.svg b/charges/ribbon5.svg new file mode 100644 index 00000000..3c718bce --- /dev/null +++ b/charges/ribbon5.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/ribbon6.svg b/charges/ribbon6.svg new file mode 100644 index 00000000..a32eede7 --- /dev/null +++ b/charges/ribbon6.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/charges/ribbon7.svg b/charges/ribbon7.svg new file mode 100644 index 00000000..2d9a1e21 --- /dev/null +++ b/charges/ribbon7.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/ribbon8.svg b/charges/ribbon8.svg new file mode 100644 index 00000000..f7c672a7 --- /dev/null +++ b/charges/ribbon8.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/rose.svg b/charges/rose.svg new file mode 100644 index 00000000..7ce11665 --- /dev/null +++ b/charges/rose.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/charges/roundel.svg b/charges/roundel.svg new file mode 100644 index 00000000..344991ed --- /dev/null +++ b/charges/roundel.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/roundel2.svg b/charges/roundel2.svg new file mode 100644 index 00000000..fffa7ad4 --- /dev/null +++ b/charges/roundel2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/charges/rustre.svg b/charges/rustre.svg new file mode 100644 index 00000000..60c253a1 --- /dev/null +++ b/charges/rustre.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/sabre.svg b/charges/sabre.svg new file mode 100644 index 00000000..0f1f002d --- /dev/null +++ b/charges/sabre.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/charges/sabre2.svg b/charges/sabre2.svg new file mode 100644 index 00000000..2466a761 --- /dev/null +++ b/charges/sabre2.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/charges/sabresCrossed.svg b/charges/sabresCrossed.svg new file mode 100644 index 00000000..e9cec5f4 --- /dev/null +++ b/charges/sabresCrossed.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/sagittarius.svg b/charges/sagittarius.svg new file mode 100644 index 00000000..ac5eaeeb --- /dev/null +++ b/charges/sagittarius.svg @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/salmon.svg b/charges/salmon.svg new file mode 100644 index 00000000..bda9bf49 --- /dev/null +++ b/charges/salmon.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/saw.svg b/charges/saw.svg new file mode 100644 index 00000000..c356263f --- /dev/null +++ b/charges/saw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/scale.svg b/charges/scale.svg new file mode 100644 index 00000000..b2da96ea --- /dev/null +++ b/charges/scale.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/scaleImbalanced.svg b/charges/scaleImbalanced.svg new file mode 100644 index 00000000..ea151649 --- /dev/null +++ b/charges/scaleImbalanced.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/scalesHanging.svg b/charges/scalesHanging.svg new file mode 100644 index 00000000..1065211b --- /dev/null +++ b/charges/scalesHanging.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/sceptre.svg b/charges/sceptre.svg new file mode 100644 index 00000000..57869cbf --- /dev/null +++ b/charges/sceptre.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/scissors.svg b/charges/scissors.svg new file mode 100644 index 00000000..a7437f1e --- /dev/null +++ b/charges/scissors.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/charges/scissors2.svg b/charges/scissors2.svg new file mode 100644 index 00000000..109d8238 --- /dev/null +++ b/charges/scissors2.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/scorpion.svg b/charges/scorpion.svg new file mode 100644 index 00000000..c132511d --- /dev/null +++ b/charges/scorpion.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/scrollClosed.svg b/charges/scrollClosed.svg new file mode 100644 index 00000000..1f7d8034 --- /dev/null +++ b/charges/scrollClosed.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/scythe.svg b/charges/scythe.svg new file mode 100644 index 00000000..b8d0a04d --- /dev/null +++ b/charges/scythe.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/charges/scythe2.svg b/charges/scythe2.svg new file mode 100644 index 00000000..7fa9de5d --- /dev/null +++ b/charges/scythe2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/serpent.svg b/charges/serpent.svg new file mode 100644 index 00000000..e12c9570 --- /dev/null +++ b/charges/serpent.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/sextifoil.svg b/charges/sextifoil.svg new file mode 100644 index 00000000..ad6e3303 --- /dev/null +++ b/charges/sextifoil.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/shears.svg b/charges/shears.svg new file mode 100644 index 00000000..3b3daeb4 --- /dev/null +++ b/charges/shears.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/shield.svg b/charges/shield.svg new file mode 100644 index 00000000..89ad41de --- /dev/null +++ b/charges/shield.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/shipWheel.svg b/charges/shipWheel.svg new file mode 100644 index 00000000..fa23136c --- /dev/null +++ b/charges/shipWheel.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/sickle.svg b/charges/sickle.svg new file mode 100644 index 00000000..753eeeaa --- /dev/null +++ b/charges/sickle.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/charges/skeleton.svg b/charges/skeleton.svg new file mode 100644 index 00000000..cde28dae --- /dev/null +++ b/charges/skeleton.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/skull.svg b/charges/skull.svg new file mode 100644 index 00000000..c7dc7044 --- /dev/null +++ b/charges/skull.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/skull2.svg b/charges/skull2.svg new file mode 100644 index 00000000..a580afd7 --- /dev/null +++ b/charges/skull2.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/charges/snail.svg b/charges/snail.svg new file mode 100644 index 00000000..387dc48a --- /dev/null +++ b/charges/snail.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/snake.svg b/charges/snake.svg new file mode 100644 index 00000000..532f2c0c --- /dev/null +++ b/charges/snake.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/snowflake.svg b/charges/snowflake.svg new file mode 100644 index 00000000..d85d067b --- /dev/null +++ b/charges/snowflake.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/spear.svg b/charges/spear.svg new file mode 100644 index 00000000..9944f9d5 --- /dev/null +++ b/charges/spear.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/charges/spiral.svg b/charges/spiral.svg new file mode 100644 index 00000000..05736127 --- /dev/null +++ b/charges/spiral.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/squirrel.svg b/charges/squirrel.svg new file mode 100644 index 00000000..bf2cc68b --- /dev/null +++ b/charges/squirrel.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/stagLodgedRegardant.svg b/charges/stagLodgedRegardant.svg new file mode 100644 index 00000000..024f648c --- /dev/null +++ b/charges/stagLodgedRegardant.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/stagPassant.svg b/charges/stagPassant.svg new file mode 100644 index 00000000..745ed25e --- /dev/null +++ b/charges/stagPassant.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/stagsAttires.svg b/charges/stagsAttires.svg new file mode 100644 index 00000000..c8b3692b --- /dev/null +++ b/charges/stagsAttires.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/stirrup.svg b/charges/stirrup.svg new file mode 100644 index 00000000..4350ad26 --- /dev/null +++ b/charges/stirrup.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/sun.svg b/charges/sun.svg new file mode 100644 index 00000000..6d58a55c --- /dev/null +++ b/charges/sun.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/sunInSplendour.svg b/charges/sunInSplendour.svg new file mode 100644 index 00000000..4de9c571 --- /dev/null +++ b/charges/sunInSplendour.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/charges/sunInSplendour2.svg b/charges/sunInSplendour2.svg new file mode 100644 index 00000000..d56c221d --- /dev/null +++ b/charges/sunInSplendour2.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/swallow.svg b/charges/swallow.svg new file mode 100644 index 00000000..bf363a15 --- /dev/null +++ b/charges/swallow.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/swan.svg b/charges/swan.svg new file mode 100644 index 00000000..26a345f7 --- /dev/null +++ b/charges/swan.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/swanErased.svg b/charges/swanErased.svg new file mode 100644 index 00000000..510c380a --- /dev/null +++ b/charges/swanErased.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/charges/sword.svg b/charges/sword.svg new file mode 100644 index 00000000..cdf8853b --- /dev/null +++ b/charges/sword.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/talbotPassant.svg b/charges/talbotPassant.svg new file mode 100644 index 00000000..121e6ba4 --- /dev/null +++ b/charges/talbotPassant.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/talbotSejant.svg b/charges/talbotSejant.svg new file mode 100644 index 00000000..e89d4b90 --- /dev/null +++ b/charges/talbotSejant.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/template.svg b/charges/template.svg new file mode 100644 index 00000000..cad51295 --- /dev/null +++ b/charges/template.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/thistle.svg b/charges/thistle.svg new file mode 100644 index 00000000..09cff52a --- /dev/null +++ b/charges/thistle.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/tower.svg b/charges/tower.svg new file mode 100644 index 00000000..9754803a --- /dev/null +++ b/charges/tower.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/charges/tree.svg b/charges/tree.svg new file mode 100644 index 00000000..0e2854fc --- /dev/null +++ b/charges/tree.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/charges/trefle.svg b/charges/trefle.svg new file mode 100644 index 00000000..8180526b --- /dev/null +++ b/charges/trefle.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/trefoil.svg b/charges/trefoil.svg new file mode 100644 index 00000000..438c993e --- /dev/null +++ b/charges/trefoil.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/charges/triangle.svg b/charges/triangle.svg new file mode 100644 index 00000000..0a06d67c --- /dev/null +++ b/charges/triangle.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/trianglePierced.svg b/charges/trianglePierced.svg new file mode 100644 index 00000000..6bbe2fc2 --- /dev/null +++ b/charges/trianglePierced.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/charges/trowel.svg b/charges/trowel.svg new file mode 100644 index 00000000..b9533474 --- /dev/null +++ b/charges/trowel.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/charges/unicornRampant.svg b/charges/unicornRampant.svg new file mode 100644 index 00000000..a3102dbc --- /dev/null +++ b/charges/unicornRampant.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wasp.svg b/charges/wasp.svg new file mode 100644 index 00000000..9d54306c --- /dev/null +++ b/charges/wasp.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wheatStalk.svg b/charges/wheatStalk.svg new file mode 100644 index 00000000..c6113ccd --- /dev/null +++ b/charges/wheatStalk.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wheel.svg b/charges/wheel.svg new file mode 100644 index 00000000..6133eee9 --- /dev/null +++ b/charges/wheel.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/windmill.svg b/charges/windmill.svg new file mode 100644 index 00000000..b814ef1e --- /dev/null +++ b/charges/windmill.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wing.svg b/charges/wing.svg new file mode 100644 index 00000000..d38622f2 --- /dev/null +++ b/charges/wing.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wingSword.svg b/charges/wingSword.svg new file mode 100644 index 00000000..75c2f80e --- /dev/null +++ b/charges/wingSword.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wolfHeadErased.svg b/charges/wolfHeadErased.svg new file mode 100644 index 00000000..518ea83f --- /dev/null +++ b/charges/wolfHeadErased.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wolfPassant.svg b/charges/wolfPassant.svg new file mode 100644 index 00000000..06f8761a --- /dev/null +++ b/charges/wolfPassant.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wolfRampant.svg b/charges/wolfRampant.svg new file mode 100644 index 00000000..f5c7f57c --- /dev/null +++ b/charges/wolfRampant.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wolfStatant.svg b/charges/wolfStatant.svg new file mode 100644 index 00000000..d592b9ef --- /dev/null +++ b/charges/wolfStatant.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wyvern.svg b/charges/wyvern.svg new file mode 100644 index 00000000..f09b821e --- /dev/null +++ b/charges/wyvern.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/charges/wyvernWithWingsDisplayed.svg b/charges/wyvernWithWingsDisplayed.svg new file mode 100644 index 00000000..d3aef9b4 --- /dev/null +++ b/charges/wyvernWithWingsDisplayed.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/fill-box.js b/components/fill-box.js new file mode 100644 index 00000000..b4d075c3 --- /dev/null +++ b/components/fill-box.js @@ -0,0 +1,74 @@ +{ + const style = /* css */ ` + fill-box:not([disabled]) { + cursor: pointer; + } + + fill-box > svg { + vertical-align: middle; + pointer-events: none; + } + + fill-box > svg > rect { + stroke: #666666; + stroke-width: 2; + } + `; + + const styleElement = document.createElement("style"); + styleElement.setAttribute("type", "text/css"); + styleElement.innerHTML = style; + document.head.appendChild(styleElement); +} + +{ + const template = document.createElement("template"); + template.innerHTML = /* html */ ` + + + + `; + + class FillBox extends HTMLElement { + constructor() { + super(); + + this.appendChild(template.content.cloneNode(true)); + this.querySelector("rect")?.setAttribute("fill", this.fill); + this.querySelector("svg")?.setAttribute("width", this.size); + this.querySelector("svg")?.setAttribute("height", this.size); + } + + static showTip() { + tip(this.tip); + } + + connectedCallback() { + this.addEventListener("mousemove", this.constructor.showTip); + } + + disconnectedCallback() { + this.removeEventListener("mousemove", this.constructor.showTip); + } + + get fill() { + return this.getAttribute("fill") || "#333"; + } + + set fill(newFill) { + this.setAttribute("fill", newFill); + this.querySelector("rect")?.setAttribute("fill", newFill); + } + + get size() { + return this.getAttribute("size") || "1em"; + } + + get tip() { + return this.dataset.tip || "Fill style. Click to change"; + } + } + + // cannot use Shadow DOM here as need an access to svg hatches + customElements.define("fill-box", FillBox); +} diff --git a/components/slider-input.js b/components/slider-input.js new file mode 100644 index 00000000..f1732027 --- /dev/null +++ b/components/slider-input.js @@ -0,0 +1,78 @@ +{ + const style = /* css */ ` + slider-input { + display: flex; + align-items: center; + gap: .4em; + } + `; + + const styleElement = document.createElement("style"); + styleElement.setAttribute("type", "text/css"); + styleElement.innerHTML = style; + document.head.appendChild(styleElement); +} + +{ + const template = document.createElement("template"); + template.innerHTML = /* html */ ` + + + `; + + class SliderInput extends HTMLElement { + constructor() { + super(); + this.appendChild(template.content.cloneNode(true)); + + const range = this.querySelector("input[type=range]"); + const number = this.querySelector("input[type=number]"); + + range.value = number.value = this.value || this.getAttribute("value") || 50; + range.min = number.min = this.getAttribute("min") || 0; + range.max = number.max = this.getAttribute("max") || 100; + range.step = number.step = this.getAttribute("step") || 1; + + range.addEventListener("input", this.handleEvent.bind(this)); + number.addEventListener("input", this.handleEvent.bind(this)); + range.addEventListener("change", this.handleEvent.bind(this)); + number.addEventListener("change", this.handleEvent.bind(this)); + } + + handleEvent(e) { + const value = e.target.value; + const isNaN = Number.isNaN(Number(value)); + if (isNaN || value === "") return e.stopPropagation(); + + const range = this.querySelector("input[type=range]"); + const number = this.querySelector("input[type=number]"); + this.value = range.value = number.value = value; + + this.dispatchEvent( + new CustomEvent(e.type, { + detail: {value}, + bubbles: true, + composed: true + }) + ); + } + + set value(value) { + const range = this.querySelector("input[type=range]"); + const number = this.querySelector("input[type=number]"); + range.value = number.value = value; + } + + get value() { + const number = this.querySelector("input[type=number]"); + return number.value; + } + + get valueAsNumber() { + const number = this.querySelector("input[type=number]"); + return number.valueAsNumber; + } + } + + customElements.define("slider-input", SliderInput); +} diff --git a/config/heightmap-templates.js b/config/heightmap-templates.js new file mode 100644 index 00000000..29738609 --- /dev/null +++ b/config/heightmap-templates.js @@ -0,0 +1,166 @@ +"use strict"; + +const heightmapTemplates = (function () { + const volcano = `Hill 1 90-100 44-56 40-60 + Multiply 0.8 50-100 0 0 + Range 1.5 30-55 45-55 40-60 + Smooth 3 0 0 0 + Hill 1.5 35-45 25-30 20-75 + Hill 1 35-55 75-80 25-75 + Hill 0.5 20-25 10-15 20-25 + Mask 3 0 0 0`; + + const highIsland = `Hill 1 90-100 65-75 47-53 + Add 7 all 0 0 + Hill 5-6 20-30 25-55 45-55 + Range 1 40-50 45-55 45-55 + Multiply 0.8 land 0 0 + Mask 3 0 0 0 + Smooth 2 0 0 0 + Trough 2-3 20-30 20-30 20-30 + Trough 2-3 20-30 60-80 70-80 + Hill 1 10-15 60-60 50-50 + Hill 1.5 13-16 15-20 20-75 + Range 1.5 30-40 15-85 30-40 + Range 1.5 30-40 15-85 60-70 + Pit 3-5 10-30 15-85 20-80`; + + const lowIsland = `Hill 1 90-99 60-80 45-55 + Hill 1-2 20-30 10-30 10-90 + Smooth 2 0 0 0 + Hill 6-7 25-35 20-70 30-70 + Range 1 40-50 45-55 45-55 + Trough 2-3 20-30 15-85 20-30 + Trough 2-3 20-30 15-85 70-80 + Hill 1.5 10-15 5-15 20-80 + Hill 1 10-15 85-95 70-80 + Pit 5-7 15-25 15-85 20-80 + Multiply 0.4 20-100 0 0 + Mask 4 0 0 0`; + + const continents = `Hill 1 80-85 60-80 40-60 + Hill 1 80-85 20-30 40-60 + Hill 6-7 15-30 25-75 15-85 + Multiply 0.6 land 0 0 + Hill 8-10 5-10 15-85 20-80 + Range 1-2 30-60 5-15 25-75 + Range 1-2 30-60 80-95 25-75 + Range 0-3 30-60 80-90 20-80 + Strait 2 vertical 0 0 + Strait 1 vertical 0 0 + Smooth 3 0 0 0 + Trough 3-4 15-20 15-85 20-80 + Trough 3-4 5-10 45-55 45-55 + Pit 3-4 10-20 15-85 20-80 + Mask 4 0 0 0`; + + const archipelago = `Add 11 all 0 0 + Range 2-3 40-60 20-80 20-80 + Hill 5 15-20 10-90 30-70 + Hill 2 10-15 10-30 20-80 + Hill 2 10-15 60-90 20-80 + Smooth 3 0 0 0 + Trough 10 20-30 5-95 5-95 + Strait 2 vertical 0 0 + Strait 2 horizontal 0 0`; + + const atoll = `Hill 1 75-80 50-60 45-55 + Hill 1.5 30-50 25-75 30-70 + Hill .5 30-50 25-35 30-70 + Smooth 1 0 0 0 + Multiply 0.2 25-100 0 0 + Hill 0.5 10-20 50-55 48-52`; + + const mediterranean = `Range 4-6 30-80 0-100 0-10 + Range 4-6 30-80 0-100 90-100 + Hill 6-8 30-50 10-90 0-5 + Hill 6-8 30-50 10-90 95-100 + Multiply 0.9 land 0 0 + Mask -2 0 0 0 + Smooth 1 0 0 0 + Hill 2-3 30-70 0-5 20-80 + Hill 2-3 30-70 95-100 20-80 + Trough 3-6 40-50 0-100 0-10 + Trough 3-6 40-50 0-100 90-100`; + + const peninsula = `Range 2-3 20-35 40-50 0-15 + Add 5 all 0 0 + Hill 1 90-100 10-90 0-5 + Add 13 all 0 0 + Hill 3-4 3-5 5-95 80-100 + Hill 1-2 3-5 5-95 40-60 + Trough 5-6 10-25 5-95 5-95 + Smooth 3 0 0 0 + Invert 0.4 both 0 0`; + + const pangea = `Hill 1-2 25-40 15-50 0-10 + Hill 1-2 5-40 50-85 0-10 + Hill 1-2 25-40 50-85 90-100 + Hill 1-2 5-40 15-50 90-100 + Hill 8-12 20-40 20-80 48-52 + Smooth 2 0 0 0 + Multiply 0.7 land 0 0 + Trough 3-4 25-35 5-95 10-20 + Trough 3-4 25-35 5-95 80-90 + Range 5-6 30-40 10-90 35-65`; + + const isthmus = `Hill 5-10 15-30 0-30 0-20 + Hill 5-10 15-30 10-50 20-40 + Hill 5-10 15-30 30-70 40-60 + Hill 5-10 15-30 50-90 60-80 + Hill 5-10 15-30 70-100 80-100 + Smooth 2 0 0 0 + Trough 4-8 15-30 0-30 0-20 + Trough 4-8 15-30 10-50 20-40 + Trough 4-8 15-30 30-70 40-60 + Trough 4-8 15-30 50-90 60-80 + Trough 4-8 15-30 70-100 80-100 + Invert 0.25 x 0 0`; + + const shattered = `Hill 8 35-40 15-85 30-70 + Trough 10-20 40-50 5-95 5-95 + Range 5-7 30-40 10-90 20-80 + Pit 12-20 30-40 15-85 20-80`; + + const taklamakan = `Hill 1-3 20-30 30-70 30-70 + Hill 2-4 60-85 0-5 0-100 + Hill 2-4 60-85 95-100 0-100 + Hill 3-4 60-85 20-80 0-5 + Hill 3-4 60-85 20-80 95-100 + Smooth 3 0 0 0`; + + const oldWorld = `Range 3 70 15-85 20-80 + Hill 2-3 50-70 15-45 20-80 + Hill 2-3 50-70 65-85 20-80 + Hill 4-6 20-25 15-85 20-80 + Multiply 0.5 land 0 0 + Smooth 2 0 0 0 + Range 3-4 20-50 15-35 20-45 + Range 2-4 20-50 65-85 45-80 + Strait 3-7 vertical 0 0 + Trough 6-8 20-50 15-85 45-65 + Pit 5-6 20-30 10-90 10-90`; + + const fractious = `Hill 12-15 50-80 5-95 5-95 + Mask -1.5 0 0 0 + Mask 3 0 0 0 + Add -20 30-100 0 0 + Range 6-8 40-50 5-95 10-90`; + + return { + volcano: {id: 0, name: "Volcano", template: volcano, probability: 3}, + highIsland: {id: 1, name: "High Island", template: highIsland, probability: 19}, + lowIsland: {id: 2, name: "Low Island", template: lowIsland, probability: 9}, + continents: {id: 3, name: "Continents", template: continents, probability: 16}, + archipelago: {id: 4, name: "Archipelago", template: archipelago, probability: 18}, + atoll: {id: 5, name: "Atoll", template: atoll, probability: 1}, + mediterranean: {id: 6, name: "Mediterranean", template: mediterranean, probability: 5}, + peninsula: {id: 7, name: "Peninsula", template: peninsula, probability: 3}, + pangea: {id: 8, name: "Pangea", template: pangea, probability: 5}, + isthmus: {id: 9, name: "Isthmus", template: isthmus, probability: 2}, + shattered: {id: 10, name: "Shattered", template: shattered, probability: 7}, + taklamakan: {id: 11, name: "Taklamakan", template: taklamakan, probability: 1}, + oldWorld: {id: 12, name: "Old World", template: oldWorld, probability: 8}, + fractious: {id: 13, name: "Fractious", template: fractious, probability: 3} + }; +})(); diff --git a/config/precreated-heightmaps.js b/config/precreated-heightmaps.js new file mode 100644 index 00000000..22f45abd --- /dev/null +++ b/config/precreated-heightmaps.js @@ -0,0 +1,27 @@ +"use strict"; + +const precreatedHeightmaps = { + "africa-centric": {id: 0, name: "Africa Centric"}, + arabia: {id: 1, name: "Arabia"}, + atlantics: {id: 2, name: "Atlantics"}, + britain: {id: 3, name: "Britain"}, + caribbean: {id: 4, name: "Caribbean"}, + "east-asia": {id: 5, name: "East Asia"}, + eurasia: {id: 6, name: "Eurasia"}, + europe: {id: 7, name: "Europe"}, + "europe-accented": {id: 8, name: "Europe Accented"}, + "europe-and-central-asia": {id: 9, name: "Europe and Central Asia"}, + "europe-central": {id: 10, name: "Europe Central"}, + "europe-north": {id: 11, name: "Europe North"}, + greenland: {id: 12, name: "Greenland"}, + hellenica: {id: 13, name: "Hellenica"}, + iceland: {id: 14, name: "Iceland"}, + "indian-ocean": {id: 15, name: "Indian Ocean"}, + "mediterranean-sea": {id: 16, name: "Mediterranean Sea"}, + "middle-east": {id: 17, name: "Middle East"}, + "north-america": {id: 18, name: "North America"}, + "us-centric": {id: 19, name: "US-centric"}, + "us-mainland": {id: 20, name: "US Mainland"}, + world: {id: 21, name: "World"}, + "world-from-pacific": {id: 22, name: "World from Pacific"} +}; diff --git a/dropbox.html b/dropbox.html new file mode 100644 index 00000000..cd1921da --- /dev/null +++ b/dropbox.html @@ -0,0 +1,48 @@ + + + + + + FMG Dropbox Auth + + + + + diff --git a/fonts.css b/fonts.css deleted file mode 100644 index c1cd22bc..00000000 --- a/fonts.css +++ /dev/null @@ -1,175 +0,0 @@ -@font-face { - font-family: 'Amatic SC'; - font-style: normal; - font-weight: 700; - src: local('Amatic SC Bold'), local('AmaticSC-Bold'), url(https://fonts.gstatic.com/s/amaticsc/v11/TUZ3zwprpvBS1izr_vOMscGKfrUC.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Architects Daughter'; - font-style: normal; - font-weight: 400; - src: local('Architects Daughter Regular'), local('ArchitectsDaughter-Regular'), url(https://fonts.gstatic.com/s/architectsdaughter/v8/RXTgOOQ9AAtaVOHxx0IUBM3t7GjCYufj5TXV5VnA2p8.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Bitter'; - font-style: normal; - font-weight: 400; - src: local('Bitter Regular'), local('Bitter-Regular'), url(https://fonts.gstatic.com/s/bitter/v12/zfs6I-5mjWQ3nxqccMoL2A.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Caesar Dressing'; - font-style: normal; - font-weight: 400; - src: local('Caesar Dressing'), local('CaesarDressing-Regular'), url(https://fonts.gstatic.com/s/caesardressing/v6/yYLx0hLa3vawqtwdswbotmK4vrRHdrz7.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Cinzel'; - font-style: normal; - font-weight: 400; - src: local('Cinzel Regular'), local('Cinzel-Regular'), url(https://fonts.gstatic.com/s/cinzel/v7/zOdksD_UUTk1LJF9z4tURA.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Comfortaa'; - font-style: normal; - font-weight: 700; - src: local('Comfortaa Bold'), local('Comfortaa-Bold'), url(https://fonts.gstatic.com/s/comfortaa/v12/fND5XPYKrF2tQDwwfWZJI-gdm0LZdjqr5-oayXSOefg.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Dancing Script'; - font-style: normal; - font-weight: 700; - src: local('Dancing Script Bold'), local('DancingScript-Bold'), url(https://fonts.gstatic.com/s/dancingscript/v9/KGBfwabt0ZRLA5W1ywjowUHdOuSHeh0r6jGTOGdAKHA.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Fredericka the Great'; - font-style: normal; - font-weight: 400; - src: local('Fredericka the Great'), local('FrederickatheGreat'), url(https://fonts.gstatic.com/s/frederickathegreat/v6/9Bt33CxNwt7aOctW2xjbCstzwVKsIBVV--Sjxbc.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Gloria Hallelujah'; - font-style: normal; - font-weight: 400; - src: local('Gloria Hallelujah'), local('GloriaHallelujah'), url(https://fonts.gstatic.com/s/gloriahallelujah/v9/CA1k7SlXcY5kvI81M_R28cNDay8z-hHR7F16xrcXsJw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Great Vibes'; - font-style: normal; - font-weight: 400; - src: local('Great Vibes'), local('GreatVibes-Regular'), url(https://fonts.gstatic.com/s/greatvibes/v5/6q1c0ofG6NKsEhAc2eh-3Y4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'IM Fell English'; - font-style: normal; - font-weight: 400; - src: local('IM FELL English Roman'), local('IM_FELL_English_Roman'), url(https://fonts.gstatic.com/s/imfellenglish/v7/xwIisCqGFi8pff-oa9uSVAkYLEKE0CJQa8tfZYc_plY.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Kaushan Script'; - font-style: normal; - font-weight: 400; - src: local('Kaushan Script'), local('KaushanScript-Regular'), url(https://fonts.gstatic.com/s/kaushanscript/v6/qx1LSqts-NtiKcLw4N03IEd0sm1ffa_JvZxsF_BEwQk.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'MedievalSharp'; - font-style: normal; - font-weight: 400; - src: local('MedievalSharp'), url(https://fonts.gstatic.com/s/medievalsharp/v9/EvOJzAlL3oU5AQl2mP5KdgptMqhwMg.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Metamorphous'; - font-style: normal; - font-weight: 400; - src: local('Metamorphous'), url(https://fonts.gstatic.com/s/metamorphous/v7/Wnz8HA03aAXcC39ZEX5y133EOyqs.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Montez'; - font-style: normal; - font-weight: 400; - src: local('Montez Regular'), local('Montez-Regular'), url(https://fonts.gstatic.com/s/montez/v8/aq8el3-0osHIcFK6bXAPkw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Nova Script'; - font-style: normal; - font-weight: 400; - src: local('Nova Script Regular'), local('NovaScript-Regular'), url(https://fonts.gstatic.com/s/novascript/v10/7Au7p_IpkSWSTWaFWkumvlQKGFw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Orbitron'; - font-style: normal; - font-weight: 400; - src: local('Orbitron Regular'), local('Orbitron-Regular'), url(https://fonts.gstatic.com/s/orbitron/v9/HmnHiRzvcnQr8CjBje6GQvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Satisfy'; - font-style: normal; - font-weight: 400; - src: local('Satisfy Regular'), local('Satisfy-Regular'), url(https://fonts.gstatic.com/s/satisfy/v8/2OzALGYfHwQjkPYWELy-cw.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Shadows Into Light'; - font-style: normal; - font-weight: 400; - src: local('Shadows Into Light'), local('ShadowsIntoLight'), url(https://fonts.gstatic.com/s/shadowsintolight/v7/clhLqOv7MXn459PTh0gXYFK2TSYBz0eNcHnp4YqE4Ts.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} - -@font-face { - font-family: 'Uncial Antiqua'; - font-style: normal; - font-weight: 400; - src: local('Uncial Antiqua'), local('UncialAntiqua-Regular'), url(https://fonts.gstatic.com/s/uncialantiqua/v5/N0bM2S5WOex4OUbESzoESK-i-MfWQZQ.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Underdog'; - font-style: normal; - font-weight: 400; - src: local('Underdog'), local('Underdog-Regular'), url(https://fonts.gstatic.com/s/underdog/v6/CHygV-jCElj7diMroWSlWV8.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} - -@font-face { - font-family: 'Yellowtail'; - font-style: normal; - font-weight: 400; - src: local('Yellowtail Regular'), local('Yellowtail-Regular'), url(https://fonts.gstatic.com/s/yellowtail/v8/GcIHC9QEwVkrA19LJU1qlPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; -} diff --git a/heightmaps/africa-centric.png b/heightmaps/africa-centric.png new file mode 100644 index 00000000..02e4a311 Binary files /dev/null and b/heightmaps/africa-centric.png differ diff --git a/heightmaps/arabia.png b/heightmaps/arabia.png new file mode 100644 index 00000000..27946711 Binary files /dev/null and b/heightmaps/arabia.png differ diff --git a/heightmaps/atlantics.png b/heightmaps/atlantics.png new file mode 100644 index 00000000..be123705 Binary files /dev/null and b/heightmaps/atlantics.png differ diff --git a/heightmaps/britain.png b/heightmaps/britain.png new file mode 100644 index 00000000..60e08da4 Binary files /dev/null and b/heightmaps/britain.png differ diff --git a/heightmaps/caribbean.png b/heightmaps/caribbean.png new file mode 100644 index 00000000..e4a8ed05 Binary files /dev/null and b/heightmaps/caribbean.png differ diff --git a/heightmaps/east-asia.png b/heightmaps/east-asia.png new file mode 100644 index 00000000..41144db5 Binary files /dev/null and b/heightmaps/east-asia.png differ diff --git a/heightmaps/eurasia.png b/heightmaps/eurasia.png new file mode 100644 index 00000000..bdbdb4d7 Binary files /dev/null and b/heightmaps/eurasia.png differ diff --git a/heightmaps/europe-accented.png b/heightmaps/europe-accented.png new file mode 100644 index 00000000..9be9480e Binary files /dev/null and b/heightmaps/europe-accented.png differ diff --git a/heightmaps/europe-and-central-asia.png b/heightmaps/europe-and-central-asia.png new file mode 100644 index 00000000..c23e97ed Binary files /dev/null and b/heightmaps/europe-and-central-asia.png differ diff --git a/heightmaps/europe-central.png b/heightmaps/europe-central.png new file mode 100644 index 00000000..b220f546 Binary files /dev/null and b/heightmaps/europe-central.png differ diff --git a/heightmaps/europe-north.png b/heightmaps/europe-north.png new file mode 100644 index 00000000..1bb49184 Binary files /dev/null and b/heightmaps/europe-north.png differ diff --git a/heightmaps/europe.png b/heightmaps/europe.png new file mode 100644 index 00000000..59dfdfea Binary files /dev/null and b/heightmaps/europe.png differ diff --git a/heightmaps/greenland.png b/heightmaps/greenland.png new file mode 100644 index 00000000..3136c539 Binary files /dev/null and b/heightmaps/greenland.png differ diff --git a/heightmaps/hellenica.png b/heightmaps/hellenica.png new file mode 100644 index 00000000..2681d6ec Binary files /dev/null and b/heightmaps/hellenica.png differ diff --git a/heightmaps/iceland.png b/heightmaps/iceland.png new file mode 100644 index 00000000..88463158 Binary files /dev/null and b/heightmaps/iceland.png differ diff --git a/heightmaps/import-rules.txt b/heightmaps/import-rules.txt new file mode 100644 index 00000000..69499114 --- /dev/null +++ b/heightmaps/import-rules.txt @@ -0,0 +1,8 @@ +To get heightmap with correct height scale: +1. Open https://tangrams.github.io/heightmapper +2. Toggle off auto-exposure +3. Set max elevation to 2000 +4. Set min elevation to -500 +5. Find region you like +6. Render image +7. Optionally rescale image to a smaller size (e.g. 500x300px) as high resolution is not used diff --git a/heightmaps/indian-ocean.png b/heightmaps/indian-ocean.png new file mode 100644 index 00000000..860ca952 Binary files /dev/null and b/heightmaps/indian-ocean.png differ diff --git a/heightmaps/mediterranean-sea.png b/heightmaps/mediterranean-sea.png new file mode 100644 index 00000000..6a7c8bb3 Binary files /dev/null and b/heightmaps/mediterranean-sea.png differ diff --git a/heightmaps/middle-east.png b/heightmaps/middle-east.png new file mode 100644 index 00000000..bfcc55bb Binary files /dev/null and b/heightmaps/middle-east.png differ diff --git a/heightmaps/north-america.png b/heightmaps/north-america.png new file mode 100644 index 00000000..1c1f1ad5 Binary files /dev/null and b/heightmaps/north-america.png differ diff --git a/heightmaps/us-centric.png b/heightmaps/us-centric.png new file mode 100644 index 00000000..7094df6a Binary files /dev/null and b/heightmaps/us-centric.png differ diff --git a/heightmaps/us-mainland.png b/heightmaps/us-mainland.png new file mode 100644 index 00000000..3b1984e7 Binary files /dev/null and b/heightmaps/us-mainland.png differ diff --git a/heightmaps/world-from-pacific.png b/heightmaps/world-from-pacific.png new file mode 100644 index 00000000..02043165 Binary files /dev/null and b/heightmaps/world-from-pacific.png differ diff --git a/heightmaps/world.png b/heightmaps/world.png new file mode 100644 index 00000000..22a79298 Binary files /dev/null and b/heightmaps/world.png differ diff --git a/icons.css b/icons.css index 88ab7e4c..4740f091 100644 --- a/icons.css +++ b/icons.css @@ -1,6 +1,7 @@ +/* FontAwesome icons, see license https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt */ @font-face { font-family: 'icons'; - src: url('data:application/font-woff2;base64,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') format('woff2'); + src: url('data:application/font-woff2;base64,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 ') format('woff2'); font-weight: normal; font-style: normal; } @@ -9,8 +10,6 @@ font-family: "icons"; font-style: normal; font-weight: normal; - speak: none; - display: inline-block; text-decoration: inherit; width: 1em; @@ -25,188 +24,267 @@ line-height: 1em; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ } /* Font Awesome icons */ -.icon-pencil:before { content: '\e800'; } /* '' */ -.icon-font:before { content: '\e801'; } /* '' */ -.icon-arrows-cw:before { content: '\e802'; } /* '' */ -.icon-doc:before { content: '\e803'; } /* '' */ -.icon-trash-empty:before { content: '\e804'; } /* '' */ -.icon-ok:before { content: '\e805'; } /* '' */ -.icon-ok-circled:before { content: '\e806'; } /* '' */ -.icon-ok-circled2:before { content: '\e807'; } /* '' */ -.icon-link:before { content: '\e808'; } /* '' */ -.icon-globe:before { content: '\e809'; } /* '' */ -.icon-plus:before { content: '\e80a'; } /* '' */ -.icon-plus-circled:before { content: '\e80b'; } /* '' */ -.icon-minus-circled:before { content: '\e80c'; } /* '' */ -.icon-minus:before { content: '\e80d'; } /* '' */ -.icon-text-height:before { content: '\e80e'; } /* '' */ -.icon-adjust:before { content: '\e80f'; } /* '' */ -.icon-tag:before { content: '\e810'; } /* '' */ -.icon-tags:before { content: '\e811'; } /* '' */ -.icon-logout:before { content: '\e812'; } /* '' */ -.icon-download:before { content: '\e813'; } /* '' */ -.icon-down-circled2:before { content: '\e814'; } /* '' */ -.icon-upload:before { content: '\e815'; } /* '' */ -.icon-up-circled2:before { content: '\e816'; } /* '' */ -.icon-cancel-circled2:before { content: '\e817'; } /* '' */ -.icon-cancel-circled:before { content: '\e818'; } /* '' */ -.icon-cancel:before { content: '\e819'; } /* '' */ -.icon-check:before { content: '\e81a'; } /* '' */ -.icon-align-left:before { content: '\e81b'; } /* '' */ -.icon-align-center:before { content: '\e81c'; } /* '' */ -.icon-align-right:before { content: '\e81d'; } /* '' */ -.icon-align-justify:before { content: '\e81e'; } /* '' */ -.icon-star:before { content: '\e81f'; } /* '' */ -.icon-star-empty:before { content: '\e820'; } /* '' */ -.icon-search:before { content: '\e821'; } /* '' */ -.icon-mail:before { content: '\e822'; } /* '' */ -.icon-eye:before { content: '\e823'; } /* '' */ -.icon-eye-off:before { content: '\e824'; } /* '' */ -.icon-pin:before { content: '\e825'; } /* '' */ -.icon-lock-open:before { content: '\e826'; } /* '' */ -.icon-lock:before { content: '\e827'; } /* '' */ -.icon-attach:before { content: '\e828'; } /* '' */ -.icon-home:before { content: '\e829'; } /* '' */ -.icon-info-circled:before { content: '\e82a'; } /* '' */ -.icon-help-circled:before { content: '\e82b'; } /* '' */ -.icon-shuffle:before { content: '\e82c'; } /* '' */ -.icon-ccw:before { content: '\e82d'; } /* '' */ -.icon-cw:before { content: '\e82e'; } /* '' */ -.icon-play:before { content: '\e82f'; } /* '' */ -.icon-play-circled2:before { content: '\e830'; } /* '' */ -.icon-down-big:before { content: '\e831'; } /* '' */ -.icon-left-big:before { content: '\e832'; } /* '' */ -.icon-right-big:before { content: '\e833'; } /* '' */ -.icon-up-big:before { content: '\e834'; } /* '' */ -.icon-up-open:before { content: '\e835'; } /* '' */ -.icon-right-open:before { content: '\e836'; } /* '' */ -.icon-left-open:before { content: '\e837'; } /* '' */ -.icon-down-open:before { content: '\e838'; } /* '' */ -.icon-cloud:before { content: '\e839'; } /* '' */ -.icon-text-width:before { content: '\e83a'; } /* '' */ -.icon-italic:before { content: '\e83b'; } /* '' */ -.icon-bold:before { content: '\e83c'; } /* '' */ -.icon-retweet:before { content: '\e83d'; } /* '' */ -.icon-user:before { content: '\e83e'; } /* '' */ -.icon-users:before { content: '\e83f'; } /* '' */ -.icon-flag:before { content: '\e840'; } /* '' */ -.icon-heart:before { content: '\e841'; } /* '' */ -.icon-heart-empty:before { content: '\e842'; } /* '' */ -.icon-edit:before { content: '\e843'; } /* '' */ -.icon-export:before { content: '\e844'; } /* '' */ -.icon-cog:before { content: '\e845'; } /* '' */ -.icon-cog-alt:before { content: '\e846'; } /* '' */ -.icon-wrench:before { content: '\e847'; } /* '' */ -.icon-resize-vertical:before { content: '\e848'; } /* '' */ -.icon-resize-small:before { content: '\e849'; } /* '' */ -.icon-resize-full:before { content: '\e84a'; } /* '' */ -.icon-resize-horizontal:before { content: '\e84b'; } /* '' */ -.icon-target:before { content: '\e84c'; } /* '' */ -.icon-signal:before { content: '\e84d'; } /* '' */ -.icon-umbrella:before { content: '\e84e'; } /* '' */ -.icon-leaf:before { content: '\e84f'; } /* '' */ -.icon-book:before { content: '\e850'; } /* '' */ -.icon-asterisk:before { content: '\e851'; } /* '' */ -.icon-chart-bar:before { content: '\e852'; } /* '' */ -.icon-key:before { content: '\e853'; } /* '' */ -.icon-hammer:before { content: '\e854'; } /* '' */ -.icon-town-hall:before { content: '\e855'; } /* '' */ -.icon-move:before { content: '\f047'; } /* '' */ -.icon-link-ext:before { content: '\f08e'; } /* '' */ -.icon-check-empty:before { content: '\f096'; } /* '' */ -.icon-resize-full-alt:before { content: '\f0b2'; } /* '' */ -.icon-docs:before { content: '\f0c5'; } /* '' */ -.icon-list-bullet:before { content: '\f0ca'; } /* '' */ -.icon-mail-alt:before { content: '\f0e0'; } /* '' */ -.icon-sitemap:before { content: '\f0e8'; } /* '' */ -.icon-exchange:before { content: '\f0ec'; } /* '' */ -.icon-download-cloud:before { content: '\f0ed'; } /* '' */ -.icon-upload-cloud:before { content: '\f0ee'; } /* '' */ -.icon-plus-squared:before { content: '\f0fe'; } /* '' */ -.icon-circle-empty:before { content: '\f10c'; } /* '' */ -.icon-folder-empty:before { content: '\f114'; } /* '' */ -.icon-folder-open-empty:before { content: '\f115'; } /* '' */ -.icon-flag-empty:before { content: '\f11d'; } /* '' */ -.icon-star-half-alt:before { content: '\f123'; } /* '' */ -.icon-fork:before { content: '\f126'; } /* '' */ -.icon-unlink:before { content: '\f127'; } /* '' */ -.icon-help:before { content: '\f128'; } /* '' */ -.icon-info:before { content: '\f129'; } /* '' */ -.icon-eraser:before { content: '\f12d'; } /* '' */ -.icon-rocket:before { content: '\f135'; } /* '' */ -.icon-anchor:before { content: '\f13d'; } /* '' */ -.icon-lock-open-alt:before { content: '\f13e'; } /* '' */ -.icon-play-circled:before { content: '\f144'; } /* '' */ -.icon-minus-squared:before { content: '\f146'; } /* '' */ -.icon-minus-squared-alt:before { content: '\f147'; } /* '' */ -.icon-level-up:before { content: '\f148'; } /* '' */ -.icon-level-down:before { content: '\f149'; } /* '' */ -.icon-ok-squared:before { content: '\f14a'; } /* '' */ -.icon-pencil-squared:before { content: '\f14b'; } /* '' */ -.icon-expand:before { content: '\f150'; } /* '' */ -.icon-collapse:before { content: '\f151'; } /* '' */ -.icon-expand-right:before { content: '\f152'; } /* '' */ -.icon-sort-alt-up:before { content: '\f160'; } /* '' */ -.icon-sort-alt-down:before { content: '\f161'; } /* '' */ -.icon-female:before { content: '\f182'; } /* '' */ -.icon-male:before { content: '\f183'; } /* '' */ -.icon-sun:before { content: '\f185'; } /* '' */ -.icon-box:before { content: '\f187'; } /* '' */ -.icon-bug:before { content: '\f188'; } /* '' */ -.icon-right-circled2:before { content: '\f18e'; } /* '' */ -.icon-left-circled2:before { content: '\f190'; } /* '' */ -.icon-collapse-left:before { content: '\f191'; } /* '' */ -.icon-dot-circled:before { content: '\f192'; } /* '' */ -.icon-plus-squared-alt:before { content: '\f196'; } /* '' */ -.icon-bank:before { content: '\f19c'; } /* '' */ -.icon-child:before { content: '\f1ae'; } /* '' */ -.icon-tree:before { content: '\f1bb'; } /* '' */ -.icon-history:before { content: '\f1da'; } /* '' */ -.icon-header:before { content: '\f1dc'; } /* '' */ -.icon-sliders:before { content: '\f1de'; } /* '' */ -.icon-trash:before { content: '\f1f8'; } /* '' */ -.icon-brush:before { content: '\f1fc'; } /* '' */ -.icon-chart-area:before { content: '\f1fe'; } /* '' */ -.icon-chart-pie:before { content: '\f200'; } /* '' */ -.icon-chart-line:before { content: '\f201'; } /* '' */ -.icon-user-secret:before { content: '\f21b'; } /* '' */ -.icon-venus:before { content: '\f221'; } /* '' */ -.icon-mars:before { content: '\f222'; } /* '' */ -.icon-venus-mars:before { content: '\f228'; } /* '' */ -.icon-neuter:before { content: '\f22c'; } /* '' */ -.icon-user-plus:before { content: '\f234'; } /* '' */ -.icon-user-times:before { content: '\f235'; } /* '' */ -.icon-object-ungroup:before { content: '\f248'; } /* '' */ -.icon-clone:before { content: '\f24d'; } /* '' */ -.icon-hourglass-1:before { content: '\f251'; } /* '' */ -.icon-hand-grab-o:before { content: '\f255'; } /* '' */ -.icon-hand-paper-o:before { content: '\f256'; } /* '' */ -.icon-calendar-check-o:before { content: '\f274'; } /* '' */ -.icon-map-pin:before { content: '\f276'; } /* '' */ -.icon-map-signs:before { content: '\f277'; } /* '' */ -.icon-map-o:before { content: '\f278'; } /* '' */ -.icon-map:before { content: '\f279'; } /* '' */ -.icon-fort-awesome:before { content: '\f286'; } /* '' */ -.icon-percent:before { content: '\f295'; } /* '' */ +.icon-pencil:before {content:'\e800';} /* '' */ +.icon-font:before {content:'\e801';} /* '' */ +.icon-arrows-cw:before {content:'\e802';} /* '' */ +.icon-doc:before {content:'\e803';} /* '' */ +.icon-trash-empty:before {content:'\e804';} /* '' */ +.icon-ok:before {content:'\e805';} /* '' */ +.icon-ok-circled:before {content:'\e806';} /* '' */ +.icon-ok-circled2:before {content:'\e807';} /* '' */ +.icon-link:before {content:'\e808';} /* '' */ +.icon-globe:before {content:'\e809';} /* '' */ +.icon-plus:before {content:'\e80a';} /* '' */ +.icon-plus-circled:before {content:'\e80b';} /* '' */ +.icon-minus-circled:before {content:'\e80c';} /* '' */ +.icon-minus:before {content:'\e80d';} /* '' */ +.icon-text-height:before {content:'\e80e';} /* '' */ +.icon-adjust:before {content:'\e80f';} /* '' */ +.icon-tag:before {content:'\e810';} /* '' */ +.icon-tags:before {content:'\e811';} /* '' */ +.icon-logout:before {content:'\e812';} /* '' */ +.icon-download:before {content:'\e813';} /* '' */ +.icon-down-circled2:before {content:'\e814';} /* '' */ +.icon-upload:before {content:'\e815';} /* '' */ +.icon-up-circled2:before {content:'\e816';} /* '' */ +.icon-cancel-circled2:before {content:'\e817';} /* '' */ +.icon-cancel-circled:before {content:'\e818';} /* '' */ +.icon-cancel:before {content:'\e819';} /* '' */ +.icon-check:before {content:'\e81a';} /* '' */ +.icon-align-left:before {content:'\e81b';} /* '' */ +.icon-align-center:before {content:'\e81c';} /* '' */ +.icon-align-right:before {content:'\e81d';} /* '' */ +.icon-align-justify:before {content:'\e81e';} /* '' */ +.icon-star:before {content:'\e81f';} /* '' */ +.icon-star-empty:before {content:'\e820';} /* '' */ +.icon-search:before {content:'\e821';} /* '' */ +.icon-mail:before {content:'\e822';} /* '' */ +.icon-eye:before {content:'\e823';} /* '' */ +.icon-eye-off:before {content:'\e824';} /* '' */ +.icon-pin:before {content:'\e825';} /* '' */ +.icon-lock-open:before {content:'\e826';} /* '' */ +.icon-lock:before {content:'\e827';} /* '' */ +.icon-attach:before {content:'\e828';} /* '' */ +.icon-home:before {content:'\e829';} /* '' */ +.icon-info-circled:before {content:'\e82a';} /* '' */ +.icon-help-circled:before {content:'\e82b';} /* '' */ +.icon-shuffle:before {content:'\e82c';} /* '' */ +.icon-ccw:before {content:'\e82d';} /* '' */ +.icon-cw:before {content:'\e82e';} /* '' */ +.icon-play:before {content:'\e82f';} /* '' */ +.icon-play-circled2:before {content:'\e830';} /* '' */ +.icon-down-big:before {content:'\e831';} /* '' */ +.icon-left-big:before {content:'\e832';} /* '' */ +.icon-right-big:before {content:'\e833';} /* '' */ +.icon-up-big:before {content:'\e834';} /* '' */ +.icon-up-open:before {content:'\e835';} /* '' */ +.icon-right-open:before {content:'\e836';} /* '' */ +.icon-left-open:before {content:'\e837';} /* '' */ +.icon-down-open:before {content:'\e838';} /* '' */ +.icon-cloud:before {content:'\e839';} /* '' */ +.icon-text-width:before {content:'\e83a';} /* '' */ +.icon-italic:before {content:'\e83b';} /* '' */ +.icon-bold:before {content:'\e83c';} /* '' */ +.icon-retweet:before {content:'\e83d';} /* '' */ +.icon-user:before {content:'\e83e';} /* '' */ +.icon-users:before {content:'\e83f';} /* '' */ +.icon-flag:before {content:'\e840';} /* '' */ +.icon-heart:before {content:'\e841';} /* '' */ +.icon-heart-empty:before {content:'\e842';} /* '' */ +.icon-edit:before {content:'\e843';} /* '' */ +.icon-export:before {content:'\e844';} /* '' */ +.icon-cog:before {content:'\e845';} /* '' */ +.icon-cog-alt:before {content:'\e846';} /* '' */ +.icon-wrench:before {content:'\e847';} /* '' */ +.icon-resize-vertical:before {content:'\e848';} /* '' */ +.icon-resize-small:before {content:'\e849';} /* '' */ +.icon-resize-full:before {content:'\e84a';} /* '' */ +.icon-resize-horizontal:before {content:'\e84b';} /* '' */ +.icon-target:before {content:'\e84c';} /* '' */ +.icon-signal:before {content:'\e84d';} /* '' */ +.icon-umbrella:before {content:'\e84e';} /* '' */ +.icon-leaf:before {content:'\e84f';} /* '' */ +.icon-book:before {content:'\e850';} /* '' */ +.icon-asterisk:before {content:'\e851';} /* '' */ +.icon-chart-bar:before {content:'\e852';} /* '' */ +.icon-key:before {content:'\e853';} /* '' */ +.icon-hammer:before {content:'\e854';} /* '' */ +.icon-star-half:before {content:'\e855';} /* '' */ +.icon-move:before {content:'\f047';} /* '' */ +.icon-expand-1:before {content:'\f065';} /* '' */ +.icon-link-ext:before {content:'\f08e';} /* '' */ +.icon-check-empty:before {content:'\f096';} /* '' */ +.icon-resize-full-alt:before {content:'\f0b2';} /* '' */ +.icon-flask:before {content:'\f0c3';} /* '' */ +.icon-docs:before {content:'\f0c5';} /* '' */ +.icon-list-bullet:before {content:'\f0ca';} /* '' */ +.icon-mail-alt:before {content:'\f0e0';} /* '' */ +.icon-sitemap:before {content:'\f0e8';} /* '' */ +.icon-exchange:before {content:'\f0ec';} /* '' */ +.icon-download-cloud:before {content:'\f0ed';} /* '' */ +.icon-upload-cloud:before {content:'\f0ee';} /* '' */ +.icon-plus-squared:before {content:'\f0fe';} /* '' */ +.icon-circle-empty:before {content:'\f10c';} /* '' */ +.icon-folder-empty:before {content:'\f114';} /* '' */ +.icon-folder-open-empty:before {content:'\f115';} /* '' */ +.icon-flag-empty:before {content:'\f11d';} /* '' */ +.icon-star-half-alt:before {content:'\f123';} /* '' */ +.icon-fork:before {content:'\f126';} /* '' */ +.icon-unlink:before {content:'\f127';} /* '' */ +.icon-help:before {content:'\f128';} /* '' */ +.icon-info:before {content:'\f129';} /* '' */ +.icon-eraser:before {content:'\f12d';} /* '' */ +.icon-rocket:before {content:'\f135';} /* '' */ +.icon-anchor:before {content:'\f13d';} /* '' */ +.icon-lock-open-alt:before {content:'\f13e';} /* '' */ +.icon-play-circled:before {content:'\f144';} /* '' */ +.icon-minus-squared:before {content:'\f146';} /* '' */ +.icon-minus-squared-alt:before {content:'\f147';} /* '' */ +.icon-level-up:before {content:'\f148';} /* '' */ +.icon-level-down:before {content:'\f149';} /* '' */ +.icon-ok-squared:before {content:'\f14a';} /* '' */ +.icon-pencil-squared:before {content:'\f14b';} /* '' */ +.icon-compass:before {content:'\f14e';} /* '' */ +.icon-expand:before {content:'\f150';} /* '' */ +.icon-collapse:before {content:'\f151';} /* '' */ +.icon-expand-right:before {content:'\f152';} /* '' */ +.icon-sort-alt-up:before {content:'\f160';} /* '' */ +.icon-sort-alt-down:before {content:'\f161';} /* '' */ +.icon-female:before {content:'\f182';} /* '' */ +.icon-male:before {content:'\f183';} /* '' */ +.icon-sun:before {content:'\f185';} /* '' */ +.icon-box:before {content:'\f187';} /* '' */ +.icon-bug:before {content:'\f188';} /* '' */ +.icon-right-circled2:before {content:'\f18e';} /* '' */ +.icon-left-circled2:before {content:'\f190';} /* '' */ +.icon-collapse-left:before {content:'\f191';} /* '' */ +.icon-dot-circled:before {content:'\f192';} /* '' */ +.icon-plus-squared-alt:before {content:'\f196';} /* '' */ +.icon-bank:before {content:'\f19c';} /* '' */ +.icon-child:before {content:'\f1ae';} /* '' */ +.icon-paw:before {content:'\f1b0';} /* '' */ +.icon-tree:before {content:'\f1bb';} /* '' */ +.icon-history:before {content:'\f1da';} /* '' */ +.icon-header:before {content:'\f1dc';} /* '' */ +.icon-sliders:before {content:'\f1de';} /* '' */ +.icon-trash:before {content:'\f1f8';} /* '' */ +.icon-brush:before {content:'\f1fc';} /* '' */ +.icon-chart-area:before {content:'\f1fe';} /* '' */ +.icon-chart-pie:before {content:'\f200';} /* '' */ +.icon-chart-line:before {content:'\f201';} /* '' */ +.icon-ship:before {content:'\f21a';} /* '' */ +.icon-user-secret:before {content:'\f21b';} /* '' */ +.icon-venus:before {content:'\f221';} /* '' */ +.icon-mars:before {content:'\f222';} /* '' */ +.icon-venus-mars:before {content:'\f228';} /* '' */ +.icon-neuter:before {content:'\f22c';} /* '' */ +.icon-user-plus:before {content:'\f234';} /* '' */ +.icon-user-times:before {content:'\f235';} /* '' */ +.icon-object-ungroup:before {content:'\f248';} /* '' */ +.icon-clone:before {content:'\f24d';} /* '' */ +.icon-balance-scale:before {content:'\f24e';} /* '' */ +.icon-hourglass-1:before {content:'\f251';} /* '' */ +.icon-hand-grab-o:before {content:'\f255';} /* '' */ +.icon-hand-paper-o:before {content:'\f256';} /* '' */ +.icon-wikipedia-w:before {content:'\f266';} /* '' */ +.icon-calendar-check-o:before {content:'\f274';} /* '' */ +.icon-map-pin:before {content:'\f276';} /* '' */ +.icon-map-signs:before {content:'\f277';} /* '' */ +.icon-map-o:before {content:'\f278';} /* '' */ +.icon-map:before {content:'\f279';} /* '' */ +.icon-fort-awesome:before {content:'\f286';} /* '' */ +.icon-percent:before {content:'\f295';} /* '' */ +.icon-shield-alt:before {content:'\f3ed';} /* '' */ +.icon-chess-bishop:before {content:'\f43a';} /* '' */ +.icon-chess-king:before {content:'\f43f';} /* '' */ +.icon-chess-knight:before {content:'\f441';} /* '' */ +.icon-chess-pawn:before {content:'\f443';} /* '' */ +.icon-chess-queen:before {content:'\f445';} /* '' */ +.icon-chess-rook:before {content:'\f447';} /* '' */ +.icon-sign:before {content:'\f4d9';} /* '' */ +.icon-user-friends:before {content:'\f500';} /* '' */ +.icon-user-shield:before {content:'\f505';} /* '' */ +.icon-crow:before {content:'\f520';} /* '' */ +.icon-crown:before {content:'\f521';} /* '' */ +.icon-ruler:before {content:'\f545';} /* '' */ +.icon-store:before {content:'\f54e';} /* '' */ +.icon-bezier-curve:before {content:'\f55b';} /* '' */ +.icon-drafting-compass:before {content:'\f568';} /* '' */ +.icon-globe-africa:before {content:'\f57c';} /* '' */ +.icon-monument:before {content:'\f5a6';} /* '' */ +.icon-mortar-pestle:before {content:'\f5a7';} /* '' */ +.icon-paint-roller:before {content:'\f5aa';} /* '' */ +.icon-pen-fancy:before {content:'\f5ac';} /* '' */ +.icon-pen-nib:before {content:'\f5ad';} /* '' */ +.icon-pencil-ruler:before {content:'\f5ae';} /* '' */ +.icon-draw-polygon:before {content:'\f5ee';} /* '' */ +.icon-layer-group:before {content:'\f5fd';} /* '' */ +.icon-menorah:before {content:'\f676';} /* '' */ +.icon-mosque:before {content:'\f678';} /* '' */ +.icon-place-of-worship:before {content:'\f67f';} /* '' */ +.icon-synagogue:before {content:'\f69b';} /* '' */ +.icon-book-dead:before {content:'\f6b7';} /* '' */ +.icon-campground:before {content:'\f6bb';} /* '' */ +.icon-mountain:before {content:'\f6fc';} /* '' */ +.icon-network-wired:before {content:'\f6ff';} /* '' */ +.icon-temperature-high:before {content:'\f769';} /* '' */ +.icon-temperature-low:before {content:'\f76b';} /* '' */ /* Amended FA icons */ -.icon-sort-name-up:after { font-size: 9px; content: '\f15d'; } -.icon-sort-name-down:after { font-size: 9px; content: '\f15e'; } -.icon-sort-number-up:after { font-size: 9px; content: '\f162'; } -.icon-sort-number-down:after { font-size: 9px; content: '\f163'; } +.icon-sort-name-up:after {font-size:.9em;content:'\f15d';} +.icon-sort-name-down:after {font-size:.9em;content:'\f15e';} +.icon-sort-number-up:after {font-size:.9em;content:'\f162';} +.icon-sort-number-down:after {font-size:.9em;content:'\f163';} /* Custom icons */ -.icon-w:before { font-style: italic; content: 'w:'; } -.icon-f:before { font-style: italic; content: 'f:'; } -.icon-n:before { font-style: italic; content: 'n:'; } -.icon-i:before { font-style: italic; content: 'i:'; } -.icon-s:before { font-style: italic; content: 's:'; } -.icon-r:before { font-style: italic; content: 'r:'; } -.icon-a:before { font-style: italic; content: 'a:'; } -.icon-smooth:before {font-weight: bold; content: '∼'; } -.icon-disrupt:before {font-weight: bold; content: '෴'; } -.icon-if:before {font-style: italic; font-weight: bold; content: 'if'; } +.icon-w:before {font-style:italic;content:'w:';} +.icon-f:before {font-style:italic;content:'f:';} +.icon-n:before {font-style:italic;content:'n:';} +.icon-i:before {font-style:italic;content:'i:';} +.icon-s:before {font-style:italic;content:'s:';} +.icon-r:before {font-style:italic;content:'r:';} +.icon-a:before {font-style:italic;content:'a:';} +.icon-smooth:before {font-weight: bold;content:'∼';} +.icon-disrupt:before {font-weight: bold;content:'⥄';} +.icon-if:before {font-style: italic; font-weight: bold;content:'if';} +.icon-coa:before {content:'\f3ed'; font-size: .9em; color: #999;} /* '' */ +.icon-half:before {font-weight: bold;content:'½';} +.icon-voice:before {content:'🔊';} +.icon-robot:before {content:'🤖';} +.icon-die:before {content:'🎲';} +.icon-button-die:before {content:'🎲'; padding-right: .4em;} +.icon-button-power:before {content:'💪'; padding-right: .6em;} + +.icon-button-melee:before {content:'⚔️'; padding-right: .4em;} +.icon-button-skirmish:before {content:'🎯'; padding-right: .4em;} +.icon-button-pursue:before {content:'🐎'; padding-right: .4em;} +.icon-button-retreat:before {content:'🏳️'; padding-right: .4em;} +.icon-button-shelling:before {content:'💣'; padding-right: .4em;} +.icon-button-boarding:before {content:'⚔️'; padding-right: .4em;} +.icon-button-chase:before {content:'⛵'; padding-right: .4em;} +.icon-button-withdrawal:before {content:'🏳️'; padding-right: .4em;} +.icon-button-bombardment:before {content:'💣'; padding-right: .4em;} +.icon-button-blockade:before {content:'⏳'; padding-right: .4em;} +.icon-button-sheltering:before {content:'🔒'; padding-right: .4em;} +.icon-button-sortie:before {content:'🚪'; padding-right: .4em;} +.icon-button-defense:before {content:'🛡️'; padding-right: .4em;} +.icon-button-storming:before {content:'⚔️'; padding-right: .4em;} +.icon-button-looting:before {content:'☠️'; padding-right: .4em;} +.icon-button-surrendering:before {content:'🏳️'; padding-right: .4em;} +.icon-button-surprise:before {content:'⚡'; padding-right: .4em;} +.icon-button-shock:before {content:'💫'; padding-right: .4em;} +.icon-button-flee:before {content:'⛵'; padding-right: .4em;} +.icon-button-waiting:before {content:'⌛'; padding-right: .4em;} +.icon-button-maneuvering:before {content:'💢'; padding-right: .4em;} +.icon-button-dogfight:before {content:'🐕'; padding-right: .4em;} + +.icon-button-field:before {content:'🗡️'; padding-right: .4em;} +.icon-button-naval:before {content:'🌊'; padding-right: .4em;} +.icon-button-siege:before {content:'🏰'; padding-right: .4em;} +.icon-button-ambush:before {content:'🌳'; padding-right: .4em;} +.icon-button-landing:before {content:'⚓'; padding-right: .4em;} +.icon-button-air:before {content:'💨'; padding-right: .4em;} +.icon-button-screenshot:before {content:'🖥️'; padding-right: .4em;} diff --git a/images/Discord.png b/images/Discord.png new file mode 100644 index 00000000..78dab317 Binary files /dev/null and b/images/Discord.png differ diff --git a/images/Tumblr.png b/images/Tumblr.png deleted file mode 100644 index 2b65ddad..00000000 Binary files a/images/Tumblr.png and /dev/null differ diff --git a/images/favicon-32x32.png b/images/favicon-32x32.png deleted file mode 100644 index e1815ea8..00000000 Binary files a/images/favicon-32x32.png and /dev/null differ diff --git a/images/favicon-16x16.png b/images/icons/favicon-16x16.png similarity index 100% rename from images/favicon-16x16.png rename to images/icons/favicon-16x16.png diff --git a/images/icons/favicon-32x32.png b/images/icons/favicon-32x32.png new file mode 100644 index 00000000..13e5179d Binary files /dev/null and b/images/icons/favicon-32x32.png differ diff --git a/images/icons/icon_x512.png b/images/icons/icon_x512.png new file mode 100644 index 00000000..f1f8c9aa Binary files /dev/null and b/images/icons/icon_x512.png differ diff --git a/images/icons/maskable_icon_x128.png b/images/icons/maskable_icon_x128.png new file mode 100644 index 00000000..fa877d1b Binary files /dev/null and b/images/icons/maskable_icon_x128.png differ diff --git a/images/icons/maskable_icon_x192.png b/images/icons/maskable_icon_x192.png new file mode 100644 index 00000000..3322eab3 Binary files /dev/null and b/images/icons/maskable_icon_x192.png differ diff --git a/images/icons/maskable_icon_x384.png b/images/icons/maskable_icon_x384.png new file mode 100644 index 00000000..c7e7e705 Binary files /dev/null and b/images/icons/maskable_icon_x384.png differ diff --git a/images/icons/maskable_icon_x512.png b/images/icons/maskable_icon_x512.png new file mode 100644 index 00000000..5b2361fd Binary files /dev/null and b/images/icons/maskable_icon_x512.png differ diff --git a/images/kiwiroo.png b/images/kiwiroo.png new file mode 100644 index 00000000..4f34ae7e Binary files /dev/null and b/images/kiwiroo.png differ diff --git a/images/pattern1.png b/images/pattern1.png new file mode 100644 index 00000000..59375796 Binary files /dev/null and b/images/pattern1.png differ diff --git a/images/pattern2.png b/images/pattern2.png new file mode 100644 index 00000000..e96f68fa Binary files /dev/null and b/images/pattern2.png differ diff --git a/images/pattern3.png b/images/pattern3.png new file mode 100644 index 00000000..636fde6f Binary files /dev/null and b/images/pattern3.png differ diff --git a/images/pattern4.png b/images/pattern4.png new file mode 100644 index 00000000..d96aa18a Binary files /dev/null and b/images/pattern4.png differ diff --git a/images/pattern5.png b/images/pattern5.png new file mode 100644 index 00000000..82a2af7c Binary files /dev/null and b/images/pattern5.png differ diff --git a/images/pattern6.png b/images/pattern6.png new file mode 100644 index 00000000..dc9271ef Binary files /dev/null and b/images/pattern6.png differ diff --git a/images/preview.png b/images/preview.png index aaa8459c..2b150732 100644 Binary files a/images/preview.png and b/images/preview.png differ diff --git a/images/textures/antique-big.jpg b/images/textures/antique-big.jpg new file mode 100644 index 00000000..711b1681 Binary files /dev/null and b/images/textures/antique-big.jpg differ diff --git a/images/textures/antique-small.jpg b/images/textures/antique-small.jpg new file mode 100644 index 00000000..851b5d07 Binary files /dev/null and b/images/textures/antique-small.jpg differ diff --git a/images/textures/folded-paper-big.jpg b/images/textures/folded-paper-big.jpg new file mode 100644 index 00000000..c2c4d761 Binary files /dev/null and b/images/textures/folded-paper-big.jpg differ diff --git a/images/textures/folded-paper-small.jpg b/images/textures/folded-paper-small.jpg new file mode 100644 index 00000000..88418a13 Binary files /dev/null and b/images/textures/folded-paper-small.jpg differ diff --git a/images/textures/gray-paper.jpg b/images/textures/gray-paper.jpg new file mode 100644 index 00000000..238d6e4c Binary files /dev/null and b/images/textures/gray-paper.jpg differ diff --git a/images/textures/iran-small.jpg b/images/textures/iran-small.jpg new file mode 100644 index 00000000..39f34512 Binary files /dev/null and b/images/textures/iran-small.jpg differ diff --git a/images/textures/marble-big.jpg b/images/textures/marble-big.jpg new file mode 100644 index 00000000..c1d2a6d4 Binary files /dev/null and b/images/textures/marble-big.jpg differ diff --git a/images/textures/marble-blue-big.jpg b/images/textures/marble-blue-big.jpg new file mode 100644 index 00000000..dbfc0975 Binary files /dev/null and b/images/textures/marble-blue-big.jpg differ diff --git a/images/textures/marble-blue-small.jpg b/images/textures/marble-blue-small.jpg new file mode 100644 index 00000000..2e95fdcb Binary files /dev/null and b/images/textures/marble-blue-small.jpg differ diff --git a/images/textures/marble-small.jpg b/images/textures/marble-small.jpg new file mode 100644 index 00000000..10d1a9ab Binary files /dev/null and b/images/textures/marble-small.jpg differ diff --git a/images/textures/mars-big.jpg b/images/textures/mars-big.jpg new file mode 100644 index 00000000..3fd39dae Binary files /dev/null and b/images/textures/mars-big.jpg differ diff --git a/images/textures/mars-small.jpg b/images/textures/mars-small.jpg new file mode 100644 index 00000000..75de8dd3 Binary files /dev/null and b/images/textures/mars-small.jpg differ diff --git a/images/textures/mauritania-small.jpg b/images/textures/mauritania-small.jpg new file mode 100644 index 00000000..22d9cecf Binary files /dev/null and b/images/textures/mauritania-small.jpg differ diff --git a/images/textures/mercury-big.jpg b/images/textures/mercury-big.jpg new file mode 100644 index 00000000..7e06f0ee Binary files /dev/null and b/images/textures/mercury-big.jpg differ diff --git a/images/textures/mercury-small.jpg b/images/textures/mercury-small.jpg new file mode 100644 index 00000000..53f31ee3 Binary files /dev/null and b/images/textures/mercury-small.jpg differ diff --git a/images/textures/ocean.jpg b/images/textures/ocean.jpg new file mode 100644 index 00000000..981366ca Binary files /dev/null and b/images/textures/ocean.jpg differ diff --git a/images/textures/pergamena-small.jpg b/images/textures/pergamena-small.jpg new file mode 100644 index 00000000..951f9eda Binary files /dev/null and b/images/textures/pergamena-small.jpg differ diff --git a/images/textures/plaster.jpg b/images/textures/plaster.jpg new file mode 100644 index 00000000..8ec85c81 Binary files /dev/null and b/images/textures/plaster.jpg differ diff --git a/images/textures/soiled-paper-vertical.png b/images/textures/soiled-paper-vertical.png new file mode 100644 index 00000000..f8bb720e Binary files /dev/null and b/images/textures/soiled-paper-vertical.png differ diff --git a/images/textures/soiled-paper.jpg b/images/textures/soiled-paper.jpg new file mode 100644 index 00000000..00333992 Binary files /dev/null and b/images/textures/soiled-paper.jpg differ diff --git a/images/textures/spain-small.jpg b/images/textures/spain-small.jpg new file mode 100644 index 00000000..a413f508 Binary files /dev/null and b/images/textures/spain-small.jpg differ diff --git a/images/textures/timbercut-big.jpg b/images/textures/timbercut-big.jpg new file mode 100644 index 00000000..7dc9b656 Binary files /dev/null and b/images/textures/timbercut-big.jpg differ diff --git a/images/textures/timbercut-small.jpg b/images/textures/timbercut-small.jpg new file mode 100644 index 00000000..a73e47be Binary files /dev/null and b/images/textures/timbercut-small.jpg differ diff --git a/index.css b/index.css index 7ee38d92..373bf63c 100644 --- a/index.css +++ b/index.css @@ -1,1275 +1,2423 @@ -@font-face { - font-family: 'Almendra SC'; - font-style: normal; - font-weight: 400; - src: local('Almendra SC Regular'), local('AlmendraSC-Regular'), url(https://fonts.gstatic.com/s/almendrasc/v8/Iure6Yx284eebowr7hbyTaZOrLQ.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; +:root { + --monospace: Consolas, monospace; + --serif: Georgia, serif; + --sans-serif: Helvetica, Arial, sans-serif; } -@media print { - div, canvas { - display: none; - } +/* hide Google translate header */ +body > .skiptranslate { + display: none; } -body { - margin: 0; - border: 0; +/* hide Google translate in-progress widget */ +body > .skiptranslate + div { + display: none; } -svg { - position: absolute; - background-color: #53679f; +/* make translated text wrapper non-blocking */ +font { + pointer-events: none; } -canvas { - position: absolute; - pointer-events: none; +input, +select, +button { + font-size: 1em; } -input, button, select, a { - outline: none; +input, +select, +textarea { + border: 0.5px solid #dbdfe6; + border-radius: 0.5px; + box-sizing: border-box; } -button, select, a { - cursor: pointer; +select { + height: 1.6em; + border-top-color: #abadb3; + padding: 0; + text-indent: 0px; } -.pointer { - cursor: pointer; +input { + border-top-color: #abadb3; + padding: 2px; + text-indent: 1px; } -#terrs { - stroke-width: 0.7; - stroke-linejoin: round; - mask: url(#shape); - mask-mode: alpha; +input:read-only { + cursor: default; } -#cults { - stroke-width: 0.7; - stroke-linejoin: round; - mask: url(#shape); - mask-mode: alpha; - pointer-events: none; -} - -#grid { - display: none; - fill: none; -} - -#landmass { - fill-rule: evenodd; - stroke: none; -} - -#lakes, -#oceanLayers { - fill-rule: evenodd; -} - -#coastline { - fill: none; - stroke-linejoin: round; -} - -#regions { - stroke-width: 0; - fill-rule: evenodd; - stroke-linejoin: round; - mask: url(#shape); - mask-mode: alpha; - pointer-events: none; -} - -#rivers { - stroke: none; - mask: url(#shape); - cursor: pointer; -} - -#icons { - cursor: pointer; -} - -#terrain { - mask: url(#shape); - mask-mode: alpha; +input[type="radio"] { + vertical-align: bottom; cursor: pointer; } -#hills { - stroke-width: 0.1px; - fill: #999999; +textarea { + padding: 3px; + box-sizing: border-box; + width: 100%; } -#mounts { - stroke-width: 0.1px; - fill: white; +iframe { + border: 0; + width: 100%; } -.strokes { - stroke-width: 0.08px; - width: 2px; - stroke: #5c5c70; - stroke-dasharray: 0.5, 0.7; - stroke-linecap: round; +#map { + background-color: #000000; + mask-mode: alpha; + mask-clip: no-clip; + fill-rule: evenodd; + user-select: none; +} + +#canvas { + position: absolute; + pointer-events: none; +} + +#preview { + position: absolute; + bottom: 1em; + left: 1em; + cursor: pointer; +} + +#pickerContainer { + position: absolute; + z-index: 100; +} + +input, +button, +select, +a, +textarea { + outline: none; +} + +button, +select, +a { + cursor: pointer; +} + +.pointer { + cursor: pointer !important; +} + +#prec text { + font-size: 32px; + stroke: none; + text-shadow: 1px 1px 1px #9daac9; + user-select: none; +} + +#population, +#cells, +#compass { + fill: none; +} + +#landmass { + mask: url(#land); + fill-rule: evenodd; +} + +#lakes, +#coastline, +#armies, +#ice, +#emblems { + cursor: pointer; +} + +#temperature { + 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; +} + +#coastline { + fill: none; + stroke-linejoin: round; +} + +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: var(--sans-serif); + fill-opacity: 1; +} + +#armies text.regimentIcon { + font-size: 0.8em; +} + +#statesHalo { + 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 { - fill: none; + stroke-linejoin: round; + fill: none; +} + +#rivers { + stroke: none; + mask: url(#land); + cursor: pointer; + fill-rule: nonzero; +} + +#anchors { + pointer-events: none; +} + +#terrain, +#burgIcons { + cursor: pointer; +} + +.strokes { + stroke-width: 0.08px; + width: 2px; + stroke: #5c5c70; + stroke-dasharray: 0.5, 0.7; + stroke-linecap: round; } #routes { - fill: none; - cursor: pointer; + fill: none; + cursor: pointer; } -#roads, #trails { - mask: url(#shape); - mask-mode: alpha; +i.icon-lock { + cursor: pointer; } -#swamps { - stroke-width: 0.05px; - fill: none; - stroke: #5c5c70; -} - -#forests { - stroke-width: 0.1px; - stroke: #5c5c70; -} - -#options .pressed { - background-color: #916e7f; - font-style: italic; -} - -#options i { - cursor: pointer; - color: #382830; - font-size: 9px; -} - -.editTrigger { - display: none; - position: relative; - width: 60px; -} - -.editTrigger[type="number"] { - width: 44px; - height: 14px; -} - -.editTrigger[type="range"] { - width: 132px; - cursor: pointer; -} - -#editGroupSelect { - width: 146px; -} - -#editGroupInput { - display: none; - width: 161px; -} - -#editText { - width: 160px; -} - -#editFontSelect { - width: 129px; -} - -#editFontInput { - width: 125px; -} - -input[type="color"].editColor { - height: 18px; - width: 46px; - padding: 0; - cursor: pointer; -} - -input[type="range"].editRange { - width: 80px; -} - -input[type="number"].editNumber { - width: 44px; -} - -#riverScale { - width: 40px; -} - -#riverAngle, #riverWidthInput, #riverIncrement { - width: 70px; -} - -.editButtonS { - display: none; - cursor: pointer; -} - -.editValue { - display: none; - cursor: default; - font-size: small; - width: 34px; -} - -#riverEditor>*, -#routeEditor>*, -#iconEditor>*, -#reliefEditor>*, -#burgEditor * { - display: inline-block; +#labelEditor div { + display: inline-block; } #labels { - text-anchor: middle; - dominant-baseline: alphabetic; - text-shadow: 0 0 4px white; - cursor: pointer; + text-anchor: middle; + dominant-baseline: central; + cursor: pointer; } -#countries { - dominant-baseline: central; +.chartInfo { + text-align: center; + font-family: var(--sans-serif); + font-style: italic; + font-size: 12px; } -#routeLength { - background-color: #f3f3f3; - border: 1px solid #a5a5a5; - padding: 3px; - font-size: 11px; - cursor: default; +#statesTree text, +#provincesTree text { + pointer-events: none; + user-select: none; + stroke: none; + font-size: 11px; } -.tag { - fill: #fffa90; - stroke: #333333; - stroke-width: 1.4px; +#statesTree circle { + filter: url(#dropShadow05); + stroke: #666666; + stroke-width: 1; } -.line { - stroke: #666666; - stroke-width: 1px; +#statesTree circle.selected, +#provincesTree .selected { + stroke: #c13119; + stroke-width: 2; } -.circle { - stroke-width: 1px; - fill: none; +.regimentDragLine { + marker-end: url(#end-arrow); + stroke: #333333; + stroke-dasharray: 5; + stroke-dashoffset: 1000; + animation: dash 80s linear backwards; } -circle.drag { - stroke: white; +.arrow { + marker-end: url(#end-arrow-small); + stroke: #555; + stroke-width: 0.5; +} + +@keyframes dash { + to { + stroke-dashoffset: 0; + } +} + +#provinceLabels, +#burgLabels { + dominant-baseline: alphabetic; + text-anchor: middle; +} + +#routeLength, +#coastlineArea { + 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; } 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; } -#options { - margin: 10px; - display: none; - font-size: smaller; - font-family: monospace; - position: absolute; - background-color: rgba(168, 130, 147, 0.85); - border: solid 1px #5e4fa2; +button.ui-button:disabled { + filter: brightness(0.95); } -.tab { - overflow: hidden; - border-bottom: 1px solid #5d4651; - height: 28px; +button.ui-button:disabled:hover { + cursor: default; } -button.options { - background-color: #997c89; - font-family: monospace; - font-weight: bold; - float: left; - border: none; - padding: 8px 14px; - transition: 0.2s; - font-size: 1em; -} - -#options p { - font-style: italic; - font-weight: bold; -} - -#aboutContent { - text-align: justify; -} - -#aboutContent p { - font-style: italic; - font-weight: normal; -} - -#aboutContent a { - color: #1d1b1c; - font-weight: bold; -} - -#options input[type="color"], -#convertImageDialog input[type="color"] { - width: 38px; - padding: 0; - border: 0; - background: none; - cursor: pointer; -} - -#options input[type="range"] { - width: 120px; - height: 2px; - background: #ffffff; - top: -2px; - position: relative; - appearance: none; - -webkit-appearance: none; -} - -#options input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - border-radius: 15%; - width: 10px; - height: 10px; - background: #916e7f; - border: 1px solid #5d4651; - cursor: pointer; -} - -#options input[type="range"]::-moz-range-thumb { - -moz-appearance: none; - border-radius: 15%; - width: 10px; - height: 10px; - background: #916e7f; - border: 1px solid #5d4651; - cursor: pointer; -} - -#options select { - height: 14px; - width: 122px; - border: 0; - font-size: smaller; - font-family: monospace; - cursor: pointer; -} - -#options .buttonoff { - background-color: #b6b4b440; - color: grey; -} - -#sticked button { - background-color: rgba(153, 124, 137, 0); - padding: 0; - margin: 1px 17px; -} - -#collapsible { - margin: 10px; - border: 1px solid transparent; - position: absolute; - z-index: 2; -} - -#collapsible>button { - height: 28px; +.ui-dialog, +#optionsContainer { + user-select: none; } #optionsTrigger { - width: 19px; - font-size: 9px; - padding: 0; + padding: 0.6em 0.45em; } -#regenerate { - display: none; - padding: 0px 8px; +@media (max-width: 600px) { + #optionsTrigger { + font-size: 2em; + padding: 0; + width: 1.3em; + height: 1.6em; + border: solid 1px #5e4fa2; + } } -.glow { - animation: glowing 3s infinite; +#options { + position: absolute; + font-family: var(--monospace); + border: solid 1px #5e4fa2; + margin: 10px; + padding-bottom: 0.3em; + background: var(--bg-light); } -@keyframes glowing { - 0% { - box-shadow: 0 0 -4px #ded2d8; - } - 50% { - box-shadow: 0 0 6px #ded2d8; - } - 100% { - box-shadow: 0 0 -4px #ded2d8; - } +#options input, +#options select, +#options button { + font-family: var(--monospace); } -button.options:hover { - background-color: #806070; - color: white; +#collapsible { + margin: 11px; + border: 0; + position: absolute; + z-index: 2; + display: grid; + grid-template-columns: 2fr 7fr; +} + +.tab { + 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: #916e7f; - color: white; + background-color: var(--header); + color: white; } -#layoutTab { - margin-left: 19px; +button.options:hover { + background-color: var(--header-active); + color: white; +} + +#options p { + 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; +} + +#aboutContent p { + font-weight: normal; + font-style: normal; +} + +#aboutContent a { + color: #1d1b1c; + font-weight: bold; + text-decoration: underline; +} + +#optionsContent span { + font-size: 0.9em; +} + +#options i { + 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; +} + +input[type="color"]::-webkit-color-swatch-wrapper { + padding: 0; +} + +#options input[type="color"] { + width: 4.5em; + height: 1em; + border: 0; +} + +#convertImageDialog input[type="color"] { + 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="text"] { + border: 0px; + width: 62%; + font-size: smaller; +} + +#options output { + text-align: right; + font-size: smaller; +} + +#options input[type="number"] { + font-size: 0.8em; + border: 0; + text-align: right; + background-color: transparent; + width: 3.3em; +} + +#options input[type="number"]::-webkit-inner-spin-button, +#options input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +#options input[type="number"] { + appearance: textfield; + -moz-appearance: textfield; +} + +#options input[type="number"]:hover { + outline: 1px solid var(--dark-solid); +} + +#options input.paired { + text-align: center; + background-color: white; +} + +#options input.long { + width: 100%; + background-color: white; + text-align: left; +} + +#options input[type="range"] { + width: 100%; + height: 8px; + background: 0; + appearance: none; + margin-left: 0; + border: 0; + padding: 0; +} + +#options input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + border-radius: 15%; + 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); +} + +#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); +} + +#styleSelectFont > option { + font-size: 2em; +} + +#sticked { + display: flex; + justify-content: space-evenly; + width: 100%; +} + +#sticked button { + background-color: transparent; + font-weight: bold; + border: 0; +} + +#sticked button:hover { + color: white; +} + +#exitCustomization { + right: 10px; + bottom: 10px; + position: absolute; + display: none; +} + +#exitCustomization > div { + width: 12em; + background: var(--dark-solid); + cursor: move; +} + +#finalizeHeightmap { + width: 100%; + border: none; + padding: 0.45em 0.75em; + margin: 0.4em 0; + white-space: nowrap; + font-family: var(--monospace); + animation: glowing 2s infinite; +} + +.glow { + animation: glowing 3s infinite ease-in-out; +} + +@keyframes glowing { + 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 6px 2px 12px; - opacity: 0.8; - max-width: 290px; + display: none; + padding: 0 12px 2px 12px; + opacity: 0.9; } .tabcontent button { - background-color: #997c89; - font-family: monospace; - border: none; - padding: 5px 8px; - margin: 4px 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; + 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; +} + +#viewMode > button { + padding: 0.35em; + margin: 0.3em 0.3em 0.6em 0.3em; + float: left; + width: 30.7%; +} + +fieldset { + border: 1px solid var(--dark-solid); } .tabcontent li { - list-style-type: none; - background-color: #997c89; - cursor: pointer; - padding: 5px 8px; - margin: 4px; - transition: 0.1s; - float: left; + 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; +} + +.tabcontent li.buttonoff { + background-color: var(--bg-disabled); + color: #444444aa; } .tabcontent li:hover { - background-color: #a8879d; + box-shadow: 0 0 2px 2px var(--dark-solid) 17; } -.tabcontent li.solid { - color: #42383f; -} - -p { - margin-bottom: 0; +.tabcontent button:hover { + background-color: var(--header); } #optionsContainer span { - cursor: default; + cursor: default; } -.pairedNumber { - width: 36px; - line-height: 16px; - height: 10px; - font-size: smaller; - font-family: monospace; -} - -#cellInfo>div { - margin: 5px; - display: inline-block; - vertical-align: top; -} - -#cellInfo>div:nth-child(2) { - width: 35%; +#cellInfo { + user-select: text; } #tooltip { - position: fixed; - display: none; - text-align: center; - top: calc(98vh - (10px + 0.5vw)); - width: 100%; - cursor: default; - text-shadow: 1px 0px 1px #1d0e0f; - color: #ffffff; - font-size: calc(10px + 0.5vw); - pointer-events: none; + 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; } #optionsContent table td:nth-of-type(1) { - width: 8px; + width: 3%; } #optionsContent table td:nth-of-type(2) { - text-decoration: underline dotted gray; - cursor: help; - width: 126px; + width: 40%; } #optionsContent table td:nth-of-type(4) { - text-align: right; - width: 18px; + text-align: right; + width: 6%; } -.overflow-div { - height: 300px; - overflow-y: auto; - user-select: text; +.emblemShapePreview { + width: 1.5em; + height: 1.5em; + margin: -0.4em 0.1em; + fill: #fff; + stroke: #000; + stroke-width: 5px; +} + +#styleContent table { + border-spacing: 0; + margin-left: 0.2em; + width: 100%; +} + +#styleContent table tr { + width: 100%; + display: table; +} + +#styleContent table td:nth-of-type(1) { + width: 34.2%; +} + +#styleElements tbody, +#styleElements caption { + display: none; +} + +#styleIsOff { + color: darkred; + font-weight: 700; + text-align: left; +} + +#styleElements .whiteButton { + padding: 0 0.8em; + border: 0; + background-color: #ffffff !important; } .overflow-table { - width: 100%; - font-size: smaller; - text-align: center; + width: 100%; + text-align: center; +} + +.matrix-table { + max-height: 80vh; + max-width: 85vw; + scrollbar-width: thin; + overflow: auto; +} + +.matrix-table > table { + text-align: center; + border-collapse: collapse; + font-size: smaller; +} + +.matrix-table > table th, +.matrix-table > table td { + border: 1px solid var(--dark-solid); + height: 2em; + padding: 0.2em; + position: relative; +} + +.matrix-table > table th { + background-color: #302a2a; + color: #ffffff; +} + +.matrix-table > table td:hover { + outline: 2px solid var(--dark-solid); + outline-offset: -1px; + z-index: 1; + cursor: pointer; +} + +.matrix-table > table td.Ally { + background-color: #73ec73; + color: #000000; +} + +.matrix-table > table td.Friendly { + background-color: #d4f8aa; +} + +.matrix-table > table td.Neutral { + background-color: #d8d9d3; +} + +.matrix-table > table td.Suspicion { + background-color: #eeafaa; +} + +.matrix-table > table td.Enemy { + background-color: #ffa39c; + color: #af0d23; +} + +.matrix-table > table td.Unknown { + background-color: #c1bfbf; +} + +.matrix-table > table td.Rival { + background-color: #bd845c; +} + +.matrix-table > table td.Vassal { + background-color: #87cefa; +} + +.matrix-table > table td.Suzerain { + background-color: #8f8fe1; +} + +.matrix-table > table td.x { + background-color: #d4ca94; + cursor: initial; } #sizeOutput { - color: green; -} - -#icons { - stroke: #0d0d0d; - fill: grey; + color: green; } .setColors { - display: inline-block; + display: inline-block; } -body button.noicon { - width: 24px; - height: 20px; - margin: 1px; - padding: 1px 6px; - float: left; - font-family: Copperplate, monospace; +#templateTools > button { + width: 1.8em; + height: 1.6em; + margin: 1px; + padding: 0.1em 0.5em; + float: left; + font-size: 1.2em; + font-family: var(--monospace); } -#brushesPanel>div, -#templateEditor>div { - margin: 2px 0; +#brushesButtons > button { + padding: 0.3em; +} + +#brushesButtons svg { + pointer-events: none; +} + +#brushesPanel > div { + margin: 2px 0; +} + +#templateEditor > div { + margin: 1px 0; } #templateEditor #templateTools { - display: inline-block; - margin-bottom: -3px; + display: inline-block; + margin-bottom: -0.3em; } -#templateSelect { - width: 150px; +#templateBody > div { + border: 1px solid #a3a3a3; + border-radius: 1px; + background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%); + margin: 1px 1px; + padding: 0.1em 0.2em; + height: 1.2em; } -#templateBody>div { - border: 1px solid #a3a3a3; - border-radius: 1px; - background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%); - margin: 1px 1px; - width: 226px; - padding: 1px 2px; - font-size: 9px; +#templateBody > div:hover { + border-color: #808080; + background-image: linear-gradient(to right, #fcfcfc 0%, #ededed 51%, #dedede 100%); } -#templateBody>div:hover { - border-color: #808080; - background-image: linear-gradient(to right, #fcfcfc 0%, #ededed 51%, #dedede 100%); +#templateBody > div > div { + display: inline-block; } -#templateBody span { - display: inline-block; - margin: 0 1px; - float: right; - cursor: pointer; +#templateBody > div > span { + float: right; + margin-inline: 1px; } -#templateBody span:hover { - color: #297cb8; +#templateBody > div > i { + float: right; } -#templateBody label { - float: right; - margin-right: 4px; -} - -#templateBody label:first-of-type { - margin-right: 12px; -} - -#templateBody input { - height: 4px; - width: 45px; - font-family: monospace; - height: 4px; - font-family: monospace; +#templateBody input, +#templateBody select { + width: 4.5em; + height: 1em; + border: 0; + background-color: #ffffff95; + color: #05044d; + font-style: italic; + font-family: var(--monospace); } #templateBody select { - border: 0; - background-color: rgba(255, 255, 255, 0); - width: 58px; - cursor: pointer; + width: 8em; + height: 1.4em; + cursor: pointer; + font-size: 0.9em; } -.controlPoints { - fill: #ff0000; - stroke: #841f1f; - stroke-width: 0.1; - cursor: move; - opacity: .8; +#templateBody .icon-resize-vertical { + 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: 0.9em; +} + +#controlPoints { + fill: #ff0000; + stroke: #841f1f; + stroke-width: 0.25; + cursor: move; + opacity: 0.8; +} + +#controlPoints > path { + 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: 0.1; + cursor: move; + opacity: 0.8; +} + +#vertices > polygon { + fill: none; + stroke: #808080; + stroke-width: 0.1; +} + +#controlPoints > circle:hover, +#vertices > circle:hover { + stroke: #2c0808; +} + +#battleBody > table { + padding: 0.2em 0.6em 0.2em 0.6em; + border: 1px solid #ccc; + margin: 0.2em 0 0.4em 0; + display: block; + overflow: auto; + max-height: 34vh; + width: 100%; +} + +#battleBody > table .regiment { + width: 13em; + font-weight: bold; +} + +tr.battleCasualties, +tr.battleSurvivors { + font-style: italic; + font-size: 0.9em; +} + +#battleBottom div.battleTypes { + position: fixed; + background-color: #ffffff30; +} + +#battleBody div.battlePhases { + position: absolute; + background-color: #ffffff30; +} + +#battleBody div.battlePhases > button, +#battleBottom div.battleTypes > button { + width: 3.2em; + display: block; + margin: 0.2em 0; +} + +div#regimentSelectorBody { + max-height: 50vh; + font-size: 0.9em; +} + +div#regimentSelectorBody > div { + padding: 0.1em; + border: 1px solid #fff; +} + +div#regimentSelectorBody > div:hover { + border: 1px solid #ccc; +} + +div#regimentSelectorBody > div.selected { + border: 1px solid #b28585; +} + +div#regimentSelectorBody > div.inactive { + background-color: #eee; + color: #aaa; +} + +div#regimentSelectorBody > div > div { + display: inline-block; + pointer-events: none; } .drag-trigger { - border-left: 12px solid transparent; - border-right: 12px solid #916e7f; - border-top: 12px solid transparent; - position: absolute; - right: 0; - top: 100%; - margin-top: -12px; + border-left: 1em solid transparent; + border-right: 1em solid #000; + border-top: 1em solid transparent; + position: absolute; + right: -1px; + bottom: -1px; + opacity: 0.3; } .drag-trigger:hover { - cursor: move; - border-right-color: #5e4fa2; -} - -#styleInputs div { - display: none; - line-height: 6px; -} - -#styleInputs #styleOpacity, -#styleInputs #styleFill, -#styleInputs #styleFilter { - display: block; -} - -#styleInputs button { - padding: 0 6px; - margin: 0 2px; - border: 1px #827c7f solid; - background-color: #ffffff; -} - -#restoreStyle { - cursor: pointer; - font-size: xx-small; -} - -.pureInput { - display: inline-block; - width: 50px; - height: 10px; - font-size: small; - font-size: smaller; - font-family: monospace; + 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: 32px; - height: 12px; - display: inline-block; - margin: 1px 2px; - border: 1px #c5c5c5 groove; - cursor: pointer; + width: 3em; + height: 1.5em; + border: 1px #999 solid; + cursor: pointer; } #colorsSelect div { - height: 18px; - display: inline-block; - cursor: pointer; + height: 1.7em; + display: inline-block; + cursor: pointer; } .color-div:hover { - border-color: red; + border-color: red; } .hoveredColor { - box-shadow: 0 0 1px 1px #717171; + box-shadow: 0 0 1px 1px #717171; } .selectedColor { - outline: 2px solid #f87b66; + outline: 2px solid #f87b66; } #colorScheme { - margin: 6px 1px 4px 1px; + margin: 6px 1px 4px 1px; } -#colorsSelectValue { - font-size: larger; - position: relative; - font-family: monospace; - font-weight: bold; - top: -3px; +#debug path.selected { + stroke-width: 0.8; + stroke: #da3126; + fill: none; +} + +#debug > text { + font-size: 2px; + text-anchor: middle; + dominant-baseline: central; } .selectedCell { - stroke-width: 1; - stroke: #da3126; + stroke-width: 1; + stroke: #da3126; } -body .ui-dialog { - padding: 1px; - font-size: 12px; +i.resetButton { + float: left; + padding-right: 0.4em; + font-size: 0.8em; + margin-top: 0.25em; + color: #ffffff; + cursor: pointer; } -body .ui-dialog-titlebar { - font-size: 14px; -} - -.ui-dialog input { - height: 14px; +i.resetButton:active { + color: var(--dark-solid); } .ui-dialog button.pressed { - box-shadow: inset 1px 1px 0 0 #ccc; - border-color: #a6a6da; - background-color: #ecd8d8; + box-shadow: inset 1px 1px 0 0 #ccc; + border-color: #a6a6da; + background-color: #ecd8d8; + border-radius: 10%; } .ui-dialog input[type="range"] { - outline: none; - height: 2px; - background: #e9e9e9; - top: -4px; - 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%; - width: 10px; - height: 10px; - background: #e9e9e9; - border: 1px solid #9b9b9b; - cursor: pointer; + -webkit-appearance: none; + border-radius: 15%; + width: 1em; + height: 1em; + background: #e9e9e9; + border: 1px solid #9b9b9b; + cursor: pointer; } .ui-dialog input[type="range"]::-moz-range-thumb { - appearance: none; - border-radius: 15%; - width: 10px; - height: 10px; - background: #e9e9e9; - border: 1px solid #9b9b9b; - cursor: pointer; + appearance: none; + border-radius: 15%; + width: 1em; + height: 1em; + background: #e9e9e9; + border: 1px solid #9b9b9b; + cursor: pointer; +} + +.ui-dialog input[type="number"] { + 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: 44px; + display: none; + position: absolute; + left: 29%; + top: 100%; + border: 1px solid #5e4fa2; + background-color: #a4879b; + width: 5em; } -#saveDropdown>div { - padding: 2px 4px; - cursor: pointer; +#loadDropdown { + display: none; + position: absolute; + left: 53%; + top: 100%; + border: 1px solid #5e4fa2; + background-color: #a4879b; + width: 9em; } -#saveDropdown>div:hover { - color: white; +#loadDropdown > div, +#saveDropdown > div { + padding: 2px 4px; + cursor: pointer; } -#brushPower, -#brushRadius { - width: 88px; +#loadDropdown > div:hover, +#saveDropdown > div:hover { + color: white; } #rescaleHigher, #rescaleLower, #rescaleModifier { - width: 40px; -} - -#rescaler { - width: 175px; - top: -2px; + width: 3.7em; } .italic { - font-style: italic; + font-style: italic; } .hidden { - display: none; + display: none !important; +} + +.table { + max-height: 75vh; + max-width: 75vw; + overflow-x: hidden; + overflow-y: auto; + scrollbar-width: thin; +} + +@media screen and (max-width: 600px) { + .table { + max-width: unset; + } +} + +.dialog::-webkit-scrollbar, +#alertMessage::-webkit-scrollbar, +.table::-webkit-scrollbar, +.matrix-table::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: transparent; +} + +.dialog::-webkit-scrollbar-thumb, +#alertMessage::-webkit-scrollbar-thumb, +.table::-webkit-scrollbar-thumb, +.matrix-table::-webkit-scrollbar-thumb { + background-color: #aaa; + border-radius: 6px; +} + +.dialog::-webkit-scrollbar-thumb:hover, +#alertMessage::-webkit-scrollbar-thumb:hover, +.table::-webkit-scrollbar-thumb:hover, +.matrix-table::-webkit-scrollbar-thumb:hover { + background: #666; +} + +.dialog { + max-width: 93vw; +} + +.dialog > div { + width: max-content; +} + +div.header { + display: grid; + width: 0; + font-weight: bold; + font-size: 0.9em; +} + +div.header > div:first-child { + margin-left: 1.8em; } .sortable { - font-weight: bold; - font-size: 10px; - cursor: pointer; - display: inline-block; + cursor: pointer; } .totalLine { - color: #666666; - font-style: italic; - font-size: 10px; - 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, #fcfcfc 0%, #f2f2f2 51%, #dedede 100%); - margin: 1px 0; - padding: 0 2px; - font-size: 10px; + border: 1px solid #d4d4d4; + background-image: linear-gradient(to right, #fafafa80 0%, #f0f0f080 50%, #c8c8c880 100%); + margin: 0.1em 0; + padding: 0 0.2em; + font-size: 0.9em; + line-height: 1.5em; } -div.states:hover { - border: 1px solid #c4c4c4; - background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 51%, #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 * { - display: inline-block; +div.states > *, +div.states sup, +div.totalLine > div { + display: inline-block; } -div.states sup { - display: inline-block; -} - -div.states>input { - width: 60px; - background: none; - border: 0; -} - -div.states>input.stateColor { - width: 13px; - height: 17px; - padding: 0px; - margin-right: -1px; - border: 0; - background: none; - cursor: pointer; +div.states > input { + width: 7em; + background: none; + border: 0; } div.states div { - width: 32px; + width: 3.2em; } -div.states .statePower { - width: 32px; - line-height: 14px; +div.states .biomeHabitability { + width: 4em; + -moz-appearance: textfield; } -div.states .stateBurgs { - width: 24px; +div.states > .statePopulation { + width: 3em; } -div.states>.stateArea { - width: 50px; +div.states:hover > .hiddenIcon { + visibility: visible !important; } -div.states>.statePopulation { - width: 30px; +div.states .icon-pencil, +div.states .icon-trash-empty, +div.states .icon-eye, +div.states .icon-pin, +div.states .icon-flag-empty, +div.states .icon-cw, +div.states .icon-lock, +div.states .icon-lock-open { + cursor: pointer; } -div.states .stateBurgs, -div.states .stateBIcon, -div.states .icon-trash-empty { - cursor: pointer; +div.states .icon-resize-vertical { + cursor: row-resize; + font-size: 0.9em; } -div.states>[class^="icon-"] { - color: #6e5e66; - padding: 0 1px 0 7px; +div.states > [class^="icon-"] { + color: #6e5e66; + padding: 0; } -div.states>.before { - color: #6e5e66; - padding: 0 1px 0 0; +div.states > .icon-arrows-cw { + color: #67575c; + font-size: 0.9em; + cursor: pointer; } -div.states>.small { - font-size: 9px; +div.states > .before { + color: #6e5e66; + padding: 0 1px 0 0; } -#burgsBody, -#countriesBody { - overflow: auto; - max-height: 362px; +div.states > .small { + font-size: 0.9em; } -#countriesBody { - min-width: 366px; +div.states > select { + width: 7em; + cursor: pointer; + border: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } -#burgsBody { - min-width: 260px; +div.states > .burgName, +div.states > .burgState, +div.states > .burgCulture { + width: 6em; } -div.states .burgName, -div.states .burgCulture { - width: 56px; +div.states span.inactive { + color: #c6c2c2; } -div.states .burgPopulation { - width: 30px; +div.states span.inactive:hover { + color: #abaaaa; +} + +div.states > .riverName { + width: 7em; +} + +div.states > .riverType { + width: 5em; +} + +.coaIcon { + stroke-width: 3; + width: 1.4em; + height: 1.4em; + margin: -0.3em 0; +} + +.coaIcon > use { + pointer-events: none; +} + +#diplomacyBodySection > div { + cursor: pointer; +} + +.changeRelations > * { + pointer-events: none; + cursor: pointer; +} + +#diplomacySelect { + width: 5em; + margin: 0.1em 0 0 -0.3em; + position: fixed; + background-color: #ffffff; + border: 1px solid #1891ff; +} + +#diplomacySelect > div { + width: 100%; + padding-left: 0.3em; +} + +#diplomacySelect > div:hover { + background-color: #1891ff; + color: #ffffff; + width: calc(100% - 0.3em); } #burgsFooterPopulation { - border: 0; - width: 50px; - color: #666666; - font-style: italic; - line-height: 14px; + border: 0; + width: 50px; + color: #666666; + font-style: italic; + line-height: 1.4em; } -div.states .enlange { - cursor: pointer; +#burgBody div.label { + display: inline-block; + width: 6em; } -#countriesEditor div>.hidden { - display: none; +#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, +#markerEditor div.label { + display: inline-block; + width: 5.5em; + padding: 0.3em 0; +} + +#exportToPngTilesScreen div.label { + display: inline-block; + width: 5em; +} + +#regimentBody input[type="number"] { + width: 5em; +} + +.burgFeature { + padding: 1px; + cursor: pointer; +} + +.burgFeature.inactive { + color: #ddd; +} + +.burgFeature.inactive:hover { + color: #abaaaa; } .placeholder { - opacity: 0; -} - -span.ui-dialog-title>input.stateColor { - width: 14px; - height: 18px; - border: 0; - background: none; - cursor: pointer; + opacity: 0; + cursor: default; + pointer-events: none; } div.states.selected { - border: 1px solid #b28585; - background-image: linear-gradient(to right, #e5dada 100%, #f2f2f2 51%, #fcfcfc 0%); + border-color: #b28585; + background-image: linear-gradient(to right, #f2f2f2 0%, #ebe7e7 50%, #e5dadb 100%); +} + +div.states.active { + border: 1px solid #c4c4c4; + background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 50%, #fcfcfc 0%); +} + +div.states.Self { + 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; } -#scaleBody { - margin-left: 14px; +div.states > input.biomeName { + width: 12em; } -#scaleBody>div>* { - display: inline-block; - font-size: 11px; +div.states > div.biomeArea { + width: 5em; } -#scaleBody>div>div { - width: 100px; +#militaryBody div.states > input { + -moz-appearance: textfield; } -#scaleBody>div>select { - width: 110px; - border: 1px solid #e9e9e9; +#militaryBody div.states > input, +#militaryBody div.states > div, +#regimentsBody div.states > div { + width: 5em; } -#scaleBody>div>input[type="text"] { - width: 110px; - border: 0; +#emblemBody > div { + padding: 1px 3px; + transition: all 0.3s ease-out; } -#scaleBody>div>input[type="range"] { - width: 80px; +#emblemBody > div.active { + background-color: #54ca7728; } -#scaleBody>div>input.output { - width: 30px; +#emblemArmiger { + text-align: center; + display: block; } -.scaleHeader { - margin-left: -10px; - font-weight: bold; - font-style: italic; - margin-top: 6px; +#emblemBody .label { + width: 6em; + display: inline-block; +} + +#emblemBody select { + width: 9em; +} + +#emblemsBottom { + margin-top: 4px; + text-align: center; +} + +#emblemUploadControl, +#emblemDownloadControl { + margin-top: 0.3em; + width: 100%; +} + +div.editorLine { + margin: 0.2em 0; + padding: 0 0.2em; + font-size: 0.9em; +} + +#emblemDownloadControl > input { + width: 4.1em; +} + +#picker text { + cursor: default; +} + +#pickerHeader { + fill: var(--header); + stroke: var(--dark-solid); + cursor: move; +} + +#pickerLabel { + fill: #f8ffff; + font-size: 12px; + font-weight: bold; + font-family: var(--sans-serif); + cursor: move !important; +} + +#pickerCloseRect { + cursor: pointer; + fill: var(--header); + stroke: #f8ffff; +} + +#pickerCloseText { + fill: #f8ffff; + font-size: 10px; + font-family: var(--sans-serif); + pointer-events: none; +} + +#pickerControls line { + stroke: #999999; + stroke-width: 2; +} + +#pickerControls circle { + fill: #ffeb3b; + stroke: #666666; + cursor: ew-resize; +} + +#pickerControls circle:hover { + fill: #eca116; + stroke: #000000; +} + +#pickerControls, +#pickerSpaces { + font-size: 11px; +} + +#pickerSpaces input { + 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; +} + +#pickerColors rect, +#pickerHatches rect { + cursor: pointer; +} + +#picker rect.selected { + 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; +} + +.unitsHeader { + margin: 0.8em 0 0 -1.1em; + font-weight: bold; + font-style: italic; +} + +#unitsBottom, +#reliefBottom { + margin: 6px 0 0 6px; +} + +#unitsBody label { + display: inline-block; + width: 9em; +} + +#unitsBody > div > select, +#unitsBody > div > input[type="text"] { + width: 14.4em; + border: 1px solid #e9e9e9; +} + +#unitsBody input[type="range"] { + width: 9em; +} + +#unitsEditor i.icon-lock-open, +#unitsEditor i.icon-lock { + color: #626573; + font-size: 0.8em; + cursor: pointer; + position: fixed; + margin: 0.4em 0 0 -0.9em; } #ruler { - cursor: move; + cursor: move; + fill: none; } -#ruler circle { - stroke: #4e5a69; - fill: yellow; +#ruler .rulerPoints { + stroke: #4e5a69; + fill: yellow; + cursor: grab; +} + +#ruler .rulerPoints .control { + fill: #999999; } #ruler .white { - stroke: white; + stroke: white; } #ruler .gray { - stroke: #3d3d3d; + stroke: #3d3d3d; + pointer-events: none; } #ruler text { - font-family: tahoma; - fill: #3d3d3d; - stroke: none; - text-anchor: middle; - dominant-baseline: ideographic; - 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 .opisometer { - fill: none; +#ruler path.planimeter { + fill: lightblue; + fill-rule: evenodd; + fill-opacity: 0.5; + stroke: #737373; } -#ruler .planimeter { - fill: lightblue; - fill-rule: evenodd; - fill-opacity: 0.5; - stroke: #737373; +#militaryOptionsTable select { + border: 1px solid #d4d4d4; } -#scaleBar { - stroke: none; - fill: none; - cursor: move; +#militaryOptionsTable input { + width: 9em; + border: 1px solid #d4d4d4; } -#scaleBar text { - fill: #353540; - text-anchor: middle; - font-family: Georgia; +#militaryOptionsTable input[type="number"] { + width: 4em; } -#scaleBottom { - margin: 6px 0 0 6px; +#militaryOptionsTable button { + width: 100%; } -#barBackColor { - width: 24px; - height: 16px; - padding: 0px; - border: 0; - background: none; - cursor: pointer; +#gridOverlay { + fill: none; } -#overlay { - fill: none; +#coordinateLabels { + fill: #333333; + font-family: var(--monospace); + text-shadow: 0 0 4px white; + stroke-width: 0; + dominant-baseline: central; + text-anchor: middle; } -#loading { - color: #fff5da; - text-align: center; - text-shadow: 0px 1px 4px #4c3a35; - max-width: 780px; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - cursor: default; - user-select: none; -} - -#title_name { - text-align: left; - font-size: 2em; - margin-left: 5%; -} - -#title { - font-size: 4.5em; - margin: -12px 0 -6px 0; -} - -#version { - text-align: right; - font-size: 1.2em; -} - -#initial { - fill: none; - stroke: black; -} - -#init-rose { - stroke-dasharray: 1; - /*animation: spin 30s infinite ease-in-out;*/ - opacity: .7; - transform: translate(50%, 50%); -} - -@keyframes spin { - 0% { - transform: translate(50%, 50%) rotate(0deg); - } - 100% { - transform: translate(50%, 50%) rotate(359deg); - } -} - -#loading-text span, -#uploading-map span { - animation-name: blink; - animation-duration: 3s; - animation-iteration-count: infinite; - animation-fill-mode: both; -} - -#loading-text span:nth-child(2) { - animation-delay: 1s; -} - -#loading-text span:nth-child(3) { - animation-delay: 2s; -} - -@keyframes blink { - 0% { - opacity: 0; - } - 20% { - opacity: 1; - } - 100% { - opacity: .1; - } +ul.share-buttons { + margin: 4px 0 0 0; + padding-left: 8%; } ul.share-buttons li { - display: inline; - float: none; - padding: 4px; - background: 0; + padding: 0; + background: none !important; + width: 16%; + margin: 0; } ul.share-buttons img { - width: 16px; + width: 2em; } input[type="checkbox"] { - display: none; + display: none; } .checkbox, .checkbox-label { - margin: 5px; - cursor: pointer; + cursor: pointer; } -.checkbox+.checkbox-label:before { - content: ''; - background: #ece6eb; - border-radius: 1px; - display: inline-block; - vertical-align: text-top; - width: 7px; - height: 7px; - padding: 2px; - margin-right: 3px; +.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 { - background: #997c89; - transition: .2s; - box-shadow: inset 0px 0px 0px 2px #ece6ea; +.checkbox:checked + .checkbox-label:before { + line-height: 0.8em; + font-weight: bold; + content: "✓"; + color: #333333; } -#map-dragged { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - align-items: center; - justify-content: center; - z-index: 10; - pointer-events: none; - text-align: center; - background: rgba(0, 0, 0, .5); +div.textual select, +div.textual textarea, +div.textual input { + font-family: var(--monospace); } -#map-dragged p { - font-size: 2.4em; - color: #fff5da; - text-shadow: 0px 1px 4px #4c3a35; +div.textual fieldset { + margin: 3px 3px 5px 0; + border-style: dashed; } -#map-dragged p:before { - content: ''; - display: inline-block; - vertical-align: middle; - height: 100%; +div.textual span, +.textual legend { + font-size: 0.9em; + font-weight: bold; } -#capital-anchors, #town-anchors { - transform: translate(-0.47em, -0.47em); +#namesbaseExamples { + font-family: var(--monospace); + cursor: pointer; +} + +#markers { + 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; +} + +#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; +} + +@media screen and (max-width: 600px) { + #notes { + width: 50vw; + } +} + +#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; +} + +#reliefEditor > div > div { + font-style: italic; + display: inline-block; +} + +#reliefEditor div.reliefEditorLabel { + width: 4em; +} + +#reliefEditor input[type="range"] { + width: 16em; +} + +#reliefIconsDiv { + margin-top: 2px; + padding: 2px; + width: 100%; +} + +#reliefIconsDiv svg { + width: 40px; + height: 40px; + background-color: #e7e6e4; + border: 1px solid #a9a9a9; + cursor: pointer; +} + +#reliefIconsDiv svg:hover { + 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; +} + +#reliefIconsSeletionAny { + display: none; + text-anchor: middle; + dominant-baseline: central; +} + +#alertMessage { + user-select: text; + max-height: 70vh; + max-width: 75vw; + overflow: auto; +} + +#alertMessage ul { + padding-left: 1.2em; + margin: 1em 0; +} + +.pseudoLink { + cursor: pointer; + text-decoration: underline; +} + +.info-line { + font-size: 0.9em; + font-style: italic; + color: gray; + user-select: none; +} + +.optionsSeedRestore { + font-size: 12px; + cursor: pointer; + margin-right: 2px; +} + +.optionsSeedRestore:hover { + color: blue; +} + +#worldControls { + width: 16em; + display: inline-block; + vertical-align: top; +} + +#worldControls > div { + display: block; + margin: 1px 0; + padding: 2px 0; +} + +#worldControls input[type="number"] { + border: 1px solid #e5e5e5; + padding: 0px; + width: 4em; +} + +#worldControls i.icon-lock-open, +#worldControls i.icon-lock { + color: #626573; + font-size: 0.8em; + cursor: pointer; +} + +#globe { + stroke: black; + stroke-width: 1; +} + +#globeNoteLines { + stroke-dasharray: 5; + stroke: #bbb; +} + +#globaAxisLabels { + font-style: italic; + font-size: 9px; + font-family: var(--monospace); + stroke: none; + fill: #001754; +} + +#globeLatLabels { + font-size: 12px; + font-family: var(--monospace); + stroke: none; + fill: #001754; +} + +#globeWindArrows { + fill: none; + stroke: #6072a3; + cursor: pointer; +} + +#globeWindArrows path { + stroke-width: 1.7px; + fill: none; + stroke: #6072a3; + pointer-events: none; +} + +#globeWindArrows circle { + fill: #fff; + fill-opacity: 0; + stroke-opacity: 0.05; +} + +#globaAxisLabels #restoreWind:hover { + cursor: pointer; + fill: blue; +} + +#globeArea { + fill: white; + fill-opacity: 0.3; +} + +#globeGraticule { + fill: none; + stroke-width: 0.2; +} + +#globePrimeMeridian { + stroke: blue; + stroke-width: 1.4; +} + +#globeEquator { + stroke: red; + stroke-width: 1.4; +} + +#legend { + cursor: move; + user-select: none; +} + +.dontAsk { + margin: 0.9em 0 0 0.6em; + display: inline-flex; + align-items: center; +} + +#errorBox { + 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: 0.4em 0.5em; + border: dashed 1px var(--dark-solid); +} + +.speaker { + font-size: 0.9em; + cursor: pointer; +} + +#prompt { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + max-width: 23em; + padding: 1.2em; + background-color: var(--bg-dialogs); + border: solid 1px var(--dark-solid); + font-size: 1.2em; + z-index: 1000; +} + +#promptText { + padding: 0 0 0.6em 0; + font-weight: bold; + font-family: var(--sans-serif); +} + +#mapOverlay { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + z-index: 10; + pointer-events: none; + text-align: center; + background: rgba(0, 0, 0, 0.5); + font-size: 2.4em; + color: #fff5da; + text-shadow: 0px 1px 4px #4c3a35; +} + +.epgrid line { + stroke: lightgrey; + stroke-opacity: 0.5; + shape-rendering: crispEdges; +} + +.epgrid path { + stroke-width: 0; +} + +#debug { + font-size: 1px; + opacity: 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; + } +} + +@media only screen and (max-width: 420px) { + table { + width: 100%; + } + + .tabcontent { + max-width: 100%; + } + + .drag-trigger { + display: none; + } +} + +@media (prefers-color-scheme: dark) { + body { + background: #25252a; + } } diff --git a/index.html b/index.html index 8c97969f..5a18e579 100644 --- a/index.html +++ b/index.html @@ -1,984 +1,8184 @@ - - - - - - Azgaar's Fantasy Map Generator Demo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Anchor - - - - - - - - - - - - - - - - - - - + + + + + Azgaar's Fantasy Map Generator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - -
-
Azgaar's
-
Fantasy Map Generator
-
v. 0.57b
-

LOADING...

-
- -