diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 7d7c68f..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -# CHANGELOG.md - -## 1.0.0 (Jan 23, 2019) - -First release diff --git a/CNAME b/CNAME deleted file mode 100644 index 39f9fdf..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -ucharify.com \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 5f37774..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - 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. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - 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: - - {project} Copyright (C) {year} {fullname} - 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 -. diff --git a/README.md b/README.md deleted file mode 100644 index da121c4..0000000 --- a/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Ruby - -A landing page template. - -* [Getting started](#getting-started) - -## Getting started -* First, ensure that node.js & npm are both installed. If not, choose your OS and installation method from [this page](https://nodejs.org/en/download/package-manager/) and follow the instructions. -* Next, use your command line to enter your project directory. -* This template comes with a ready-to-use package file called `package-sample.json`. You just need to rename it to `package.json`, then run `npm install` to install all of the dependencies into your project. - -You're ready to go! Run any task by typing `npm run task` (where "task" is the name of the task in the `"scripts"` object). The most useful task for rapid development is `watch`. It will start a new server, open up a browser and watch for any SCSS or JS changes in the `src` directory; once it compiles those changes, the browser will automatically inject the changed file(s)! diff --git a/dist/css/style.css b/dist/css/style.css deleted file mode 100644 index 07edd35..0000000 --- a/dist/css/style.css +++ /dev/null @@ -1,3 +0,0 @@ -html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{background:#fff;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}hr{border:0;display:block;height:1px;background:#E4E8EE;margin-top:24px;margin-bottom:24px}ul,ol{margin-top:0;margin-bottom:24px;padding-left:24px}ul{list-style:disc}ol{list-style:decimal}li>ul,li>ol{margin-bottom:0}dl{margin-top:0;margin-bottom:24px}dt{font-weight:600}dd{margin-left:24px;margin-bottom:24px}img{height:auto;max-width:100%;vertical-align:middle}figure{margin:24px 0}figcaption{font-size:16px;line-height:24px;padding:8px 0}img,svg{display:block}table{border-collapse:collapse;margin-bottom:24px;width:100%}tr{border-bottom:1px solid #E4E8EE}th{text-align:left}th,td{padding:10px 16px}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}html{font-size:20px;line-height:30px}body{color:#6B7A90;font-size:1rem}body,button,input,select,textarea{font-family:"Heebo", sans-serif}a{color:#7E6EE6;text-decoration:none}a:hover,a:active{outline:0;text-decoration:underline}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{clear:both;color:#161E2A;font-family:"PLayfair Display", sans-serif;font-weight:600}h1,.h1{font-size:34px;line-height:44px;letter-spacing:0px}@media (min-width: 641px){h1,.h1{font-size:44px;line-height:54px;letter-spacing:0px}}h2,.h2{font-size:30px;line-height:40px;letter-spacing:0px}@media (min-width: 641px){h2,.h2{font-size:34px;line-height:44px;letter-spacing:0px}}h3,.h3,blockquote{font-size:24px;line-height:34px;letter-spacing:0px}@media (min-width: 641px){h3,.h3,blockquote{font-size:30px;line-height:40px;letter-spacing:0px}}h4,h5,h6,.h4,.h5,.h6{font-size:24px;line-height:34px;letter-spacing:0px}@media (max-width: 640px){.h1-mobile{font-size:34px;line-height:44px;letter-spacing:0px}.h2-mobile{font-size:30px;line-height:40px;letter-spacing:0px}.h3-mobile{font-size:24px;line-height:34px;letter-spacing:0px}.h4-mobile,.h5-mobile,.h6-mobile{font-size:24px;line-height:34px;letter-spacing:0px}}.text-light{color:#6B7A90}.text-light a{color:#6B7A90}.text-light h1,.text-light h2,.text-light h3,.text-light h4,.text-light h5,.text-light h6,.text-light .h1,.text-light .h2,.text-light .h3,.text-light .h4,.text-light .h5,.text-light .h6{color:#fff !important}.text-sm{font-size:18px;line-height:28px;letter-spacing:-0.1px}.text-xs{font-size:16px;line-height:24px;letter-spacing:-0.1px}h1,h2,.h1,.h2{margin-top:48px;margin-bottom:16px}h3,.h3{margin-top:36px;margin-bottom:12px}h4,h5,h6,.h4,.h5,.h6{margin-top:24px;margin-bottom:4px}p{margin-top:0;margin-bottom:24px}dfn,cite,em,i{font-style:italic}blockquote{color:#252E3B;font-style:italic;margin-top:24px;margin-bottom:24px;margin-left:24px}blockquote::before{content:"\201C"}blockquote::after{content:"\201D"}blockquote p{display:inline}address{color:#252E3B;border-width:1px 0;border-style:solid;border-color:#E4E8EE;padding:24px 0;margin:0 0 24px}pre,pre h1,pre h2,pre h3,pre h4,pre h5,pre h6,pre .h1,pre .h2,pre .h3,pre .h4,pre .h5,pre .h6{font-family:"Courier 10 Pitch", Courier, monospace}pre,code,kbd,tt,var{background:#F3F5F8}pre{font-size:16px;line-height:24px;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:24px;margin-top:24px;margin-bottom:24px}code,kbd,tt,var{font-family:Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;font-size:16px;padding:2px 4px}abbr,acronym{cursor:help}mark,ins{text-decoration:none}small{font-size:18px;line-height:28px;letter-spacing:-0.1px}b,strong{font-weight:600}button,input,select,textarea,label{font-size:20px;line-height:30px}.container,.container-sm{width:100%;margin:0 auto;padding-left:16px;padding-right:16px}@media (min-width: 481px){.container,.container-sm{padding-left:24px;padding-right:24px}}.container{max-width:1128px}.container-sm{max-width:848px}.container .container-sm{max-width:800px;padding-left:0;padding-right:0}.screen-reader-text{clip:rect(1px, 1px, 1px, 1px);position:absolute !important;height:1px;width:1px;overflow:hidden;word-wrap:normal !important}.screen-reader-text:focus{border-radius:2px;box-shadow:0 0 2px 2px rgba(0,0,0,0.6);clip:auto !important;display:block;font-size:14px;letter-spacing:0px;font-weight:600;line-height:16px;text-decoration:none;text-transform:uppercase;background-color:#fff;color:#7E6EE6 !important;border:none;height:auto;left:8px;padding:16px 40px;top:8px;width:auto;z-index:100000}.list-reset{list-style:none;padding:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary{color:#7E6EE6}.text-secondary{color:#5AE0D2}.has-top-divider{position:relative}.has-top-divider::before{content:'';position:absolute;top:0;left:0;width:100%;display:block;height:1px;background:#E4E8EE}.has-bottom-divider{position:relative}.has-bottom-divider::after{content:'';position:absolute;bottom:0;left:0;width:100%;display:block;height:1px;background:#E4E8EE}.m-0{margin:0}.mt-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.m-8{margin:8px}.mt-8{margin-top:8px}.mr-8{margin-right:8px}.mb-8{margin-bottom:8px}.ml-8{margin-left:8px}.m-16{margin:16px}.mt-16{margin-top:16px}.mr-16{margin-right:16px}.mb-16{margin-bottom:16px}.ml-16{margin-left:16px}.m-24{margin:24px}.mt-24{margin-top:24px}.mr-24{margin-right:24px}.mb-24{margin-bottom:24px}.ml-24{margin-left:24px}.m-32{margin:32px}.mt-32{margin-top:32px}.mr-32{margin-right:32px}.mb-32{margin-bottom:32px}.ml-32{margin-left:32px}.m-40{margin:40px}.mt-40{margin-top:40px}.mr-40{margin-right:40px}.mb-40{margin-bottom:40px}.ml-40{margin-left:40px}.m-48{margin:48px}.mt-48{margin-top:48px}.mr-48{margin-right:48px}.mb-48{margin-bottom:48px}.ml-48{margin-left:48px}.m-56{margin:56px}.mt-56{margin-top:56px}.mr-56{margin-right:56px}.mb-56{margin-bottom:56px}.ml-56{margin-left:56px}.m-64{margin:64px}.mt-64{margin-top:64px}.mr-64{margin-right:64px}.mb-64{margin-bottom:64px}.ml-64{margin-left:64px}.p-0{padding:0}.pt-0{padding-top:0}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.p-8{padding:8px}.pt-8{padding-top:8px}.pr-8{padding-right:8px}.pb-8{padding-bottom:8px}.pl-8{padding-left:8px}.p-16{padding:16px}.pt-16{padding-top:16px}.pr-16{padding-right:16px}.pb-16{padding-bottom:16px}.pl-16{padding-left:16px}.p-24{padding:24px}.pt-24{padding-top:24px}.pr-24{padding-right:24px}.pb-24{padding-bottom:24px}.pl-24{padding-left:24px}.p-32{padding:32px}.pt-32{padding-top:32px}.pr-32{padding-right:32px}.pb-32{padding-bottom:32px}.pl-32{padding-left:32px}.p-40{padding:40px}.pt-40{padding-top:40px}.pr-40{padding-right:40px}.pb-40{padding-bottom:40px}.pl-40{padding-left:40px}.p-48{padding:48px}.pt-48{padding-top:48px}.pr-48{padding-right:48px}.pb-48{padding-bottom:48px}.pl-48{padding-left:48px}.p-56{padding:56px}.pt-56{padding-top:56px}.pr-56{padding-right:56px}.pb-56{padding-bottom:56px}.pl-56{padding-left:56px}.p-64{padding:64px}.pt-64{padding-top:64px}.pr-64{padding-right:64px}.pb-64{padding-bottom:64px}.pl-64{padding-left:64px}.sr .has-animations .is-revealing{visibility:hidden}.button{display:inline-flex;font-size:14px;letter-spacing:0px;font-weight:700;line-height:16px;text-decoration:none !important;text-transform:uppercase;background-color:#fff;background:#fff;color:#7E6EE6 !important;border:none;border-radius:2px;cursor:pointer;justify-content:center;padding:16px 40px;height:48px;text-align:center;white-space:nowrap}.button:active{outline:0}.button::before{border-radius:2px}.button-shadow{position:relative}.button-shadow::before{content:'';position:absolute;top:0;right:0;bottom:0;left:0;box-shadow:0 8px 16px rgba(22,30,42,0.12);mix-blend-mode:multiply;transition:box-shadow .15s ease}.button-shadow:hover::before{box-shadow:0 8px 16px rgba(22,30,42,0.16)}.button-sm{padding:8px 24px;height:32px}.button-sm.button-shadow::before{box-shadow:0 4px 16px rgba(22,30,42,0.12)}.button-sm.button-shadow:hover::before{box-shadow:0 4px 16px rgba(22,30,42,0.16)}.button-primary,.button-secondary{color:#fff !important;transition:background .15s ease}.button-primary{background:#7E6EE6}.button-primary:hover{background:#8677e8}.button-primary.button-shadow::before{box-shadow:0 8px 16px rgba(126,110,230,0.24)}.button-primary.button-shadow:hover::before{box-shadow:0 8px 16px rgba(126,110,230,0.32)}.button-primary .button-sm.button-shadow::before{box-shadow:0 4px 16px rgba(126,110,230,0.24)}.button-primary .button-sm.button-shadow:hover::before{box-shadow:0 4px 16px rgba(126,110,230,0.32)}.button-secondary{background:#5AE0D2}.button-secondary:hover{background:#67e2d6}.button-secondary.button-shadow::before{box-shadow:0 8px 16px rgba(90,224,210,0.24)}.button-secondary.button-shadow:hover::before{box-shadow:0 8px 16px rgba(90,224,210,0.32)}.button-secondary .button-sm.button-shadow::before{box-shadow:0 4px 16px rgba(90,224,210,0.24)}.button-secondary .button-sm.button-shadow:hover::before{box-shadow:0 4px 16px rgba(90,224,210,0.32)}.button-block{display:flex;width:100%}@media (max-width: 640px){.button-wide-mobile{width:100%;max-width:280px}}.site-header{padding:24px 0;position:absolute;top:0;left:0;width:100%;z-index:1}.site-header-inner{position:relative;display:flex;justify-content:space-between;align-items:center}.header-links{display:inline-flex}.header-links li{display:inline-flex}.header-links a:not(.button){font-size:16px;line-height:24px;letter-spacing:-0.1px;font-weight:600;color:rgba(255,255,255,0.8);text-transform:uppercase;text-decoration:none;line-height:16px;padding:8px 24px}.header-links a:not(.button):hover,.header-links a:not(.button):active{color:#fff}.hero{position:relative;padding-top:128px;padding-bottom:80px;z-index:0}.hero::before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;background:#161E2A;z-index:-2}.hero::after{content:'';position:absolute;top:0;left:calc(50% - 320px);width:640px;height:136px;background-image:url("../images/hero-illustration.svg");background-size:640px 136px;background-repeat:no-repeat;z-index:-1}.hero-copy{position:relative}@media (min-width: 641px){.hero{padding-top:160px;padding-bottom:128px}.hero::after{left:calc(50% - 720px);width:1440px;height:307px;background-size:1440px 307px}.hero-paragraph{padding-left:72px;padding-right:72px}}.has-animations .hero::before,.has-animations .hero::after,.has-animations .site-header,.has-animations .hero-title,.has-animations .hero-paragraph,.has-animations .hero-cta{opacity:0}.has-animations.is-loaded .hero::before{-webkit-animation:heroBg 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards;animation:heroBg 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards}.has-animations.is-loaded .hero::after{-webkit-animation:heroFadeIn .6s ease forwards .3s;animation:heroFadeIn .6s ease forwards .3s}.has-animations.is-loaded .site-header{-webkit-animation:heroFadeIn .6s ease forwards .3s;animation:heroFadeIn .6s ease forwards .3s}.has-animations.is-loaded .hero-title{-webkit-animation:heroContent 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards 0.15s;animation:heroContent 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards 0.15s}.has-animations.is-loaded .hero-paragraph{-webkit-animation:heroContent 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards 0.3s;animation:heroContent 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards 0.3s}.has-animations.is-loaded .hero-cta{-webkit-animation:heroContent 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards 0.45s;animation:heroContent 0.6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards 0.45s}@-webkit-keyframes heroBg{from{-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes heroBg{from{-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes heroContent{from{-webkit-transform:translateY(-40px);transform:translateY(-40px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes heroContent{from{-webkit-transform:translateY(-40px);transform:translateY(-40px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes heroFadeIn{from{opacity:0}to{opacity:1}}@keyframes heroFadeIn{from{opacity:0}to{opacity:1}}.features .section-title{position:relative;margin-bottom:32px;max-width:620px;margin-left:auto;margin-right:auto;z-index:0}.features .section-title::before{content:'';position:absolute;top:-20px;left:0;width:76px;height:85px;background-image:url("../images/features-quote-illustration.svg");background-size:100% 100%;background-repeat:no-repeat;z-index:-1}.features-illustration{margin-bottom:32px}.features-wrap{display:flex;flex-wrap:wrap;justify-content:center;margin-right:-12px;margin-left:-12px;margin-top:-16px}.features-wrap:last-of-type{margin-bottom:-16px}.features-wrap:not(:last-of-type){margin-bottom:16px}.feature{padding:16px 12px;width:364px;max-width:364px;flex-grow:1}.feature-inner{height:100%}.feature-icon{display:flex;justify-content:center}@media (min-width: 641px){.features .section-title{margin-bottom:64px}.features .section-title::before{top:-45px;width:87px;height:112px}.features-illustration{margin-bottom:64px}.features-wrap{margin-right:-24px;margin-left:-24px;margin-top:-32px}.features-wrap:last-of-type{margin-bottom:-32px}.features-wrap:not(:last-of-type){margin-bottom:32px}.feature{padding:32px 24px;width:388px;max-width:388px}}.features-extended-header{margin-bottom:32px}.features-extended-wrap{display:flex;flex-wrap:wrap;margin-top:-16px}.features-extended-wrap:last-of-type{margin-bottom:-16px}.features-extended-wrap:not(:last-of-type){margin-bottom:16px}.feature-extended{padding:16px 0}.feature-extended-image{margin-bottom:24px}.feature-extended-image img,.feature-extended-image svg{width:100%;max-width:360px;height:auto;margin-left:auto;margin-right:auto;overflow:visible;box-shadow:0 20px 48px rgba(22,30,42,0.16)}.feature-extended-body{text-align:center}@media (min-width: 641px){.features-extended .container{max-width:876px}.features-extended .section-inner{padding-bottom:102px}.features-extended .section-paragraph{padding-left:72px;padding-right:72px;margin-bottom:0}.features-extended-header{margin-bottom:80px}.features-extended-wrap{margin-top:-40px}.features-extended-wrap:last-of-type{margin-bottom:-40px}.features-extended-wrap:not(:last-of-type){margin-bottom:40px}.feature-extended{display:flex;flex-wrap:nowrap;align-items:stretch;justify-content:flex-end;padding:40px 0}.feature-extended .feature-extended-image{margin-right:48px;margin-bottom:0}.feature-extended .feature-extended-image img,.feature-extended .feature-extended-image svg{width:auto;max-width:460px;margin-left:0}.feature-extended:nth-child(odd){justify-content:flex-start}.feature-extended:nth-child(odd) .feature-extended-image{order:1;margin-left:48px;margin-right:0}.feature-extended:nth-child(odd) .feature-extended-image img,.feature-extended:nth-child(odd) .feature-extended-image svg{margin-left:auto;margin-right:0}.feature-extended-body{display:flex;flex-direction:column;justify-content:center;flex-shrink:0;width:360px;text-align:left}}@media (min-width: 1025px){.features-extended .container{max-width:996px}.feature-extended-body{width:480px}}.pricing{background:#161E2A;color:#9EABC0}.pricing .section-title{margin-bottom:48px}.pricing-tables-wrap{display:flex;flex-wrap:wrap;justify-content:center;margin-right:-12px;margin-left:-12px;margin-top:-12px}.pricing-tables-wrap:last-of-type{margin-bottom:-12px}.pricing-tables-wrap:not(:last-of-type){margin-bottom:12px}.pricing-table{padding:12px;width:368px;max-width:368px;flex-grow:1}.pricing-table-inner{position:relative;display:flex;flex-wrap:wrap;background:#252E3B;padding:24px;height:100%}.pricing-table-inner>*{width:100%}.pricing-table-header{border-bottom:1px dashed #6B7A90}.pricing-table-price{font-family:"PLayfair Display", sans-serif;color:#fff}.pricing-table-price-currency{font-size:24px;line-height:34px;letter-spacing:0px}@media (min-width: 641px){.pricing-table-price-currency{font-size:30px;line-height:40px;letter-spacing:0px}}.pricing-table-features-title{color:#fff}.pricing-table-features{margin-bottom:64px}.pricing-table-features li{display:flex;align-items:center;margin-bottom:12px}.pricing-table-features li::before{content:'';width:16px;height:13px;margin-right:12px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICA8cGF0aCBkPSJNNS42IDhMMi40IDQuOCAwIDcuMmw1LjYgNS42TDE2IDIuNCAxMy42IDB6IiBmaWxsPSIjNUFFMEQyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=);background-repeat:no-repeat}.pricing-table-cta{align-self:flex-end}@media (min-width: 641px){.pricing .section-title{margin-bottom:80px}}.testimonials .section-title{margin-bottom:48px}.testimonials-wrap{display:flex;flex-wrap:wrap;justify-content:center;margin-right:-12px;margin-left:-12px;margin-top:-12px}.testimonials-wrap:last-of-type{margin-bottom:-12px}.testimonials-wrap:not(:last-of-type){margin-bottom:12px}.testimonial{padding:12px;width:368px;max-width:368px;flex-grow:1}.testimonial-inner{position:relative;display:flex;flex-wrap:wrap;background:#fff;padding:32px 24px;height:100%;box-shadow:0 20px 48px rgba(22,30,42,0.16)}.testimonial-inner>*{width:100%}.testimonial-footer{display:flex;flex-wrap:wrap;align-items:center}.testimonial-image{width:40px;height:40px;margin-right:12px}.testimonial-image img{border-radius:20px}.testimonial-name{color:#161E2A}@media (min-width: 641px){.testimonials .section-title{margin-bottom:80px}}.cta{position:relative;text-align:center}.cta .section-inner{padding:32px}.cta .section-title{margin-bottom:48px;color:#E5E1FF !important}.cta::before{content:'';width:100%;height:50%;position:absolute;left:0;bottom:0;background:#161E2A}.cta-inner{position:relative;background:#7E6EE6;overflow:hidden}.cta-inner::before{content:'';position:absolute;right:58px;bottom:calc(50% - 155px);width:155px;height:150px;background-image:url("../images/cta-illustration.svg");background-repeat:no-repeat}.cta-inner>*{position:relative}@media (min-width: 641px){.cta{text-align:left}.cta .section-inner{padding:64px 32px}.cta .section-title{margin-bottom:0;padding-right:24px}.cta-inner{display:flex;align-items:center;justify-content:space-between}.cta-inner::before{bottom:calc(50% - 42px)}}.is-boxed{background:#fff}.body-wrap{background:#fff;overflow:hidden;display:flex;flex-direction:column;min-height:100vh}.boxed-container{max-width:1440px;margin:0 auto;box-shadow:0 20px 48px rgba(22,30,42,0.16)}main{flex:1 0 auto}.section-inner{position:relative;padding-top:48px;padding-bottom:48px}@media (min-width: 641px){.section-inner{padding-top:80px;padding-bottom:80px}}.site-footer{font-size:14px;line-height:20px;letter-spacing:0px;background:#161E2A}.site-footer a{color:#6B7A90;text-decoration:none}.site-footer a:hover,.site-footer a:active{text-decoration:underline}.site-footer-inner{padding-top:48px;padding-bottom:32px}.footer-brand,.footer-social-links,.footer-bottom-links,.footer-copyright{display:flex;justify-content:center}.footer-social-links li+li,.footer-bottom-links li+li{margin-left:16px}.footer-social-links{margin-left:-8px}.footer-social-links li{display:inline-flex}.footer-social-links li a{padding:8px}.site-footer-unit-inner{padding-top:32px;border-top:2px solid #252E3B}.footer-title{color:#fff;font-weight:700;text-transform:uppercase}.footer-top-links ul{margin-bottom:32px}.footer-top-links li{margin-bottom:12px}.footer-top-links a{color:#9EABC0}.site-footer-bottom{margin-top:48px}@media (max-width: 640px){.site-footer-unit:first-of-type .site-footer-unit-inner{padding-top:0;border-top:none}}@media (min-width: 641px){.site-footer-inner{padding-top:56px}.site-footer-top{display:flex;flex-wrap:wrap;margin-right:-12px;margin-left:-12px;margin-top:-12px}.site-footer-top:last-of-type{margin-bottom:-12px}.site-footer-top:not(:last-of-type){margin-bottom:12px}.site-footer-unit{padding:12px;flex-basis:276px;flex-grow:1}.footer-brand,.footer-social-links{justify-content:flex-start}.site-footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:20px}.footer-bottom-links{margin-bottom:0;order:1}} - -/*# sourceMappingURL=data:application/json;base64,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ZSxDQUFDLDBCQUEwQix3REFBd0QsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLDBCQUEwQixtQkFBbUIsZ0JBQWdCLENBQUMsaUJBQWlCLFlBQVksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsOEJBQThCLG1CQUFtQixDQUFDLG9DQUFvQyxrQkFBa0IsQ0FBQyxrQkFBa0IsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxtQ0FBbUMsMEJBQTBCLENBQUMsb0JBQW9CLFlBQVksQ0FBQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsZUFBZSxDQUFDLHFCQUFxQixlQUFlLENBQUMsT0FBTyxDQUFDIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbImh0bWx7bGluZS1oZWlnaHQ6MS4xNTstbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlfWJvZHl7bWFyZ2luOjB9YXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLG5hdixzZWN0aW9ue2Rpc3BsYXk6YmxvY2t9aDF7Zm9udC1zaXplOjJlbTttYXJnaW46MC42N2VtIDB9ZmlnY2FwdGlvbixmaWd1cmUsbWFpbntkaXNwbGF5OmJsb2NrfWZpZ3VyZXttYXJnaW46MWVtIDQwcHh9aHJ7Ym94LXNpemluZzpjb250ZW50LWJveDtoZWlnaHQ6MDtvdmVyZmxvdzp2aXNpYmxlfXByZXtmb250LWZhbWlseTptb25vc3BhY2UsIG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOm9iamVjdHN9YWJiclt0aXRsZV17Ym9yZGVyLWJvdHRvbTpub25lO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcHtmb250LWZhbWlseTptb25vc3BhY2UsIG1vbm9zcGFjZTtmb250LXNpemU6MWVtfWRmbntmb250LXN0eWxlOml0YWxpY31tYXJre2JhY2tncm91bmQtY29sb3I6I2ZmMDtjb2xvcjojMDAwfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3Vie2JvdHRvbTotMC4yNWVtfXN1cHt0b3A6LTAuNWVtfWF1ZGlvLHZpZGVve2Rpc3BsYXk6aW5saW5lLWJsb2NrfWF1ZGlvOm5vdChbY29udHJvbHNdKXtkaXNwbGF5Om5vbmU7aGVpZ2h0OjB9aW1ne2JvcmRlci1zdHlsZTpub25lfXN2Zzpub3QoOnJvb3Qpe292ZXJmbG93OmhpZGRlbn1idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7Zm9udC1zaXplOjEwMCU7bGluZS1oZWlnaHQ6MS4xNTttYXJnaW46MH1idXR0b24saW5wdXR7b3ZlcmZsb3c6dmlzaWJsZX1idXR0b24sc2VsZWN0e3RleHQtdHJhbnNmb3JtOm5vbmV9YnV0dG9uLGh0bWwgW3R5cGU9XCJidXR0b25cIl0sW3R5cGU9XCJyZXNldFwiXSxbdHlwZT1cInN1Ym1pdFwiXXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9ufWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVye2JvcmRlci1zdHlsZTpub25lO3BhZGRpbmc6MH1idXR0b246LW1vei1mb2N1c3JpbmcsW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxbdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOjFweCBkb3R0ZWQgQnV0dG9uVGV4dH1maWVsZHNldHtwYWRkaW5nOjAuMzVlbSAwLjc1ZW0gMC42MjVlbX1sZWdlbmR7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7ZGlzcGxheTp0YWJsZTttYXgtd2lkdGg6MTAwJTtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm9ybWFsfXByb2dyZXNze2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfXRleHRhcmVhe292ZXJmbG93OmF1dG99W3R5cGU9XCJjaGVja2JveFwiXSxbdHlwZT1cInJhZGlvXCJde2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9XCJzZWFyY2hcIl17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fVt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9ZGV0YWlscyxtZW51e2Rpc3BsYXk6YmxvY2t9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1jYW52YXN7ZGlzcGxheTppbmxpbmUtYmxvY2t9dGVtcGxhdGV7ZGlzcGxheTpub25lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZX1odG1se2JveC1zaXppbmc6Ym9yZGVyLWJveH0qLCo6YmVmb3JlLCo6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fWJvZHl7YmFja2dyb3VuZDojZmZmOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfWhye2JvcmRlcjowO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOiNFNEU4RUU7bWFyZ2luLXRvcDoyNHB4O21hcmdpbi1ib3R0b206MjRweH11bCxvbHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToyNHB4O3BhZGRpbmctbGVmdDoyNHB4fXVse2xpc3Qtc3R5bGU6ZGlzY31vbHtsaXN0LXN0eWxlOmRlY2ltYWx9bGk+dWwsbGk+b2x7bWFyZ2luLWJvdHRvbTowfWRse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjI0cHh9ZHR7Zm9udC13ZWlnaHQ6NjAwfWRke21hcmdpbi1sZWZ0OjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4fWltZ3toZWlnaHQ6YXV0bzttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9ZmlndXJle21hcmdpbjoyNHB4IDB9ZmlnY2FwdGlvbntmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyNHB4O3BhZGRpbmc6OHB4IDB9aW1nLHN2Z3tkaXNwbGF5OmJsb2NrfXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTttYXJnaW4tYm90dG9tOjI0cHg7d2lkdGg6MTAwJX10cntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTRFOEVFfXRoe3RleHQtYWxpZ246bGVmdH10aCx0ZHtwYWRkaW5nOjEwcHggMTZweH10aDpmaXJzdC1jaGlsZCx0ZDpmaXJzdC1jaGlsZHtwYWRkaW5nLWxlZnQ6MH10aDpsYXN0LWNoaWxkLHRkOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDowfWh0bWx7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MzBweH1ib2R5e2NvbG9yOiM2QjdBOTA7Zm9udC1zaXplOjFyZW19Ym9keSxidXR0b24saW5wdXQsc2VsZWN0LHRleHRhcmVhe2ZvbnQtZmFtaWx5OlwiSGVlYm9cIiwgc2Fucy1zZXJpZn1he2NvbG9yOiM3RTZFRTY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9YTpob3ZlcixhOmFjdGl2ZXtvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1oMSxoMixoMyxoNCxoNSxoNiwuaDEsLmgyLC5oMywuaDQsLmg1LC5oNntjbGVhcjpib3RoO2NvbG9yOiMxNjFFMkE7Zm9udC1mYW1pbHk6XCJQTGF5ZmFpciBEaXNwbGF5XCIsIHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NjAwfWgxLC5oMXtmb250LXNpemU6MzRweDtsaW5lLWhlaWdodDo0NHB4O2xldHRlci1zcGFjaW5nOjBweH1AbWVkaWEgKG1pbi13aWR0aDogNjQxcHgpe2gxLC5oMXtmb250LXNpemU6NDRweDtsaW5lLWhlaWdodDo1NHB4O2xldHRlci1zcGFjaW5nOjBweH19aDIsLmgye2ZvbnQtc2l6ZTozMHB4O2xpbmUtaGVpZ2h0OjQwcHg7bGV0dGVyLXNwYWNpbmc6MHB4fUBtZWRpYSAobWluLXdpZHRoOiA2NDFweCl7aDIsLmgye2ZvbnQtc2l6ZTozNHB4O2xpbmUtaGVpZ2h0OjQ0cHg7bGV0dGVyLXNwYWNpbmc6MHB4fX1oMywuaDMsYmxvY2txdW90ZXtmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDozNHB4O2xldHRlci1zcGFjaW5nOjBweH1AbWVkaWEgKG1pbi13aWR0aDogNjQxcHgpe2gzLC5oMyxibG9ja3F1b3Rle2ZvbnQtc2l6ZTozMHB4O2xpbmUtaGVpZ2h0OjQwcHg7bGV0dGVyLXNwYWNpbmc6MHB4fX1oNCxoNSxoNiwuaDQsLmg1LC5oNntmb250LXNpemU6MjRweDtsaW5lLWhlaWdodDozNHB4O2xldHRlci1zcGFjaW5nOjBweH1AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpey5oMS1tb2JpbGV7Zm9udC1zaXplOjM0cHg7bGluZS1oZWlnaHQ6NDRweDtsZXR0ZXItc3BhY2luZzowcHh9LmgyLW1vYmlsZXtmb250LXNpemU6MzBweDtsaW5lLWhlaWdodDo0MHB4O2xldHRlci1zcGFjaW5nOjBweH0uaDMtbW9iaWxle2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OjM0cHg7bGV0dGVyLXNwYWNpbmc6MHB4fS5oNC1tb2JpbGUsLmg1LW1vYmlsZSwuaDYtbW9iaWxle2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OjM0cHg7bGV0dGVyLXNwYWNpbmc6MHB4fX0udGV4dC1saWdodHtjb2xvcjojNkI3QTkwfS50ZXh0LWxpZ2h0IGF7Y29sb3I6IzZCN0E5MH0udGV4dC1saWdodCBoMSwudGV4dC1saWdodCBoMiwudGV4dC1saWdodCBoMywudGV4dC1saWdodCBoNCwudGV4dC1saWdodCBoNSwudGV4dC1saWdodCBoNiwudGV4dC1saWdodCAuaDEsLnRleHQtbGlnaHQgLmgyLC50ZXh0LWxpZ2h0IC5oMywudGV4dC1saWdodCAuaDQsLnRleHQtbGlnaHQgLmg1LC50ZXh0LWxpZ2h0IC5oNntjb2xvcjojZmZmICFpbXBvcnRhbnR9LnRleHQtc217Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjhweDtsZXR0ZXItc3BhY2luZzotMC4xcHh9LnRleHQteHN7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MjRweDtsZXR0ZXItc3BhY2luZzotMC4xcHh9aDEsaDIsLmgxLC5oMnttYXJnaW4tdG9wOjQ4cHg7bWFyZ2luLWJvdHRvbToxNnB4fWgzLC5oM3ttYXJnaW4tdG9wOjM2cHg7bWFyZ2luLWJvdHRvbToxMnB4fWg0LGg1LGg2LC5oNCwuaDUsLmg2e21hcmdpbi10b3A6MjRweDttYXJnaW4tYm90dG9tOjRweH1we21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjI0cHh9ZGZuLGNpdGUsZW0saXtmb250LXN0eWxlOml0YWxpY31ibG9ja3F1b3Rle2NvbG9yOiMyNTJFM0I7Zm9udC1zdHlsZTppdGFsaWM7bWFyZ2luLXRvcDoyNHB4O21hcmdpbi1ib3R0b206MjRweDttYXJnaW4tbGVmdDoyNHB4fWJsb2NrcXVvdGU6OmJlZm9yZXtjb250ZW50OlwiXFwyMDFDXCJ9YmxvY2txdW90ZTo6YWZ0ZXJ7Y29udGVudDpcIlxcMjAxRFwifWJsb2NrcXVvdGUgcHtkaXNwbGF5OmlubGluZX1hZGRyZXNze2NvbG9yOiMyNTJFM0I7Ym9yZGVyLXdpZHRoOjFweCAwO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6I0U0RThFRTtwYWRkaW5nOjI0cHggMDttYXJnaW46MCAwIDI0cHh9cHJlLHByZSBoMSxwcmUgaDIscHJlIGgzLHByZSBoNCxwcmUgaDUscHJlIGg2LHByZSAuaDEscHJlIC5oMixwcmUgLmgzLHByZSAuaDQscHJlIC5oNSxwcmUgLmg2e2ZvbnQtZmFtaWx5OlwiQ291cmllciAxMCBQaXRjaFwiLCBDb3VyaWVyLCBtb25vc3BhY2V9cHJlLGNvZGUsa2JkLHR0LHZhcntiYWNrZ3JvdW5kOiNGM0Y1Rjh9cHJle2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7bWFyZ2luLWJvdHRvbToxLjZlbTttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MjRweDttYXJnaW4tdG9wOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4fWNvZGUsa2JkLHR0LHZhcntmb250LWZhbWlseTpNb25hY28sIENvbnNvbGFzLCBcIkFuZGFsZSBNb25vXCIsIFwiRGVqYVZ1IFNhbnMgTW9ub1wiLCBtb25vc3BhY2U7Zm9udC1zaXplOjE2cHg7cGFkZGluZzoycHggNHB4fWFiYnIsYWNyb255bXtjdXJzb3I6aGVscH1tYXJrLGluc3t0ZXh0LWRlY29yYXRpb246bm9uZX1zbWFsbHtmb250LXNpemU6MThweDtsaW5lLWhlaWdodDoyOHB4O2xldHRlci1zcGFjaW5nOi0wLjFweH1iLHN0cm9uZ3tmb250LXdlaWdodDo2MDB9YnV0dG9uLGlucHV0LHNlbGVjdCx0ZXh0YXJlYSxsYWJlbHtmb250LXNpemU6MjBweDtsaW5lLWhlaWdodDozMHB4fS5jb250YWluZXIsLmNvbnRhaW5lci1zbXt3aWR0aDoxMDAlO21hcmdpbjowIGF1dG87cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDoxNnB4fUBtZWRpYSAobWluLXdpZHRoOiA0ODFweCl7LmNvbnRhaW5lciwuY29udGFpbmVyLXNte3BhZGRpbmctbGVmdDoyNHB4O3BhZGRpbmctcmlnaHQ6MjRweH19LmNvbnRhaW5lcnttYXgtd2lkdGg6MTEyOHB4fS5jb250YWluZXItc217bWF4LXdpZHRoOjg0OHB4fS5jb250YWluZXIgLmNvbnRhaW5lci1zbXttYXgtd2lkdGg6ODAwcHg7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5zY3JlZW4tcmVhZGVyLXRleHR7Y2xpcDpyZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7cG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtoZWlnaHQ6MXB4O3dpZHRoOjFweDtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOm5vcm1hbCAhaW1wb3J0YW50fS5zY3JlZW4tcmVhZGVyLXRleHQ6Zm9jdXN7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNoYWRvdzowIDAgMnB4IDJweCByZ2JhKDAsMCwwLDAuNik7Y2xpcDphdXRvICFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDtsZXR0ZXItc3BhY2luZzowcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjE2cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojN0U2RUU2ICFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmU7aGVpZ2h0OmF1dG87bGVmdDo4cHg7cGFkZGluZzoxNnB4IDQwcHg7dG9wOjhweDt3aWR0aDphdXRvO3otaW5kZXg6MTAwMDAwfS5saXN0LXJlc2V0e2xpc3Qtc3R5bGU6bm9uZTtwYWRkaW5nOjB9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnRleHQtcHJpbWFyeXtjb2xvcjojN0U2RUU2fS50ZXh0LXNlY29uZGFyeXtjb2xvcjojNUFFMEQyfS5oYXMtdG9wLWRpdmlkZXJ7cG9zaXRpb246cmVsYXRpdmV9Lmhhcy10b3AtZGl2aWRlcjo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jaztoZWlnaHQ6MXB4O2JhY2tncm91bmQ6I0U0RThFRX0uaGFzLWJvdHRvbS1kaXZpZGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5oYXMtYm90dG9tLWRpdmlkZXI6OmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jaztoZWlnaHQ6MXB4O2JhY2tncm91bmQ6I0U0RThFRX0ubS0we21hcmdpbjowfS5tdC0we21hcmdpbi10b3A6MH0ubXItMHttYXJnaW4tcmlnaHQ6MH0ubWItMHttYXJnaW4tYm90dG9tOjB9Lm1sLTB7bWFyZ2luLWxlZnQ6MH0ubS04e21hcmdpbjo4cHh9Lm10LTh7bWFyZ2luLXRvcDo4cHh9Lm1yLTh7bWFyZ2luLXJpZ2h0OjhweH0ubWItOHttYXJnaW4tYm90dG9tOjhweH0ubWwtOHttYXJnaW4tbGVmdDo4cHh9Lm0tMTZ7bWFyZ2luOjE2cHh9Lm10LTE2e21hcmdpbi10b3A6MTZweH0ubXItMTZ7bWFyZ2luLXJpZ2h0OjE2cHh9Lm1iLTE2e21hcmdpbi1ib3R0b206MTZweH0ubWwtMTZ7bWFyZ2luLWxlZnQ6MTZweH0ubS0yNHttYXJnaW46MjRweH0ubXQtMjR7bWFyZ2luLXRvcDoyNHB4fS5tci0yNHttYXJnaW4tcmlnaHQ6MjRweH0ubWItMjR7bWFyZ2luLWJvdHRvbToyNHB4fS5tbC0yNHttYXJnaW4tbGVmdDoyNHB4fS5tLTMye21hcmdpbjozMnB4fS5tdC0zMnttYXJnaW4tdG9wOjMycHh9Lm1yLTMye21hcmdpbi1yaWdodDozMnB4fS5tYi0zMnttYXJnaW4tYm90dG9tOjMycHh9Lm1sLTMye21hcmdpbi1sZWZ0OjMycHh9Lm0tNDB7bWFyZ2luOjQwcHh9Lm10LTQwe21hcmdpbi10b3A6NDBweH0ubXItNDB7bWFyZ2luLXJpZ2h0OjQwcHh9Lm1iLTQwe21hcmdpbi1ib3R0b206NDBweH0ubWwtNDB7bWFyZ2luLWxlZnQ6NDBweH0ubS00OHttYXJnaW46NDhweH0ubXQtNDh7bWFyZ2luLXRvcDo0OHB4fS5tci00OHttYXJnaW4tcmlnaHQ6NDhweH0ubWItNDh7bWFyZ2luLWJvdHRvbTo0OHB4fS5tbC00OHttYXJnaW4tbGVmdDo0OHB4fS5tLTU2e21hcmdpbjo1NnB4fS5tdC01NnttYXJnaW4tdG9wOjU2cHh9Lm1yLTU2e21hcmdpbi1yaWdodDo1NnB4fS5tYi01NnttYXJnaW4tYm90dG9tOjU2cHh9Lm1sLTU2e21hcmdpbi1sZWZ0OjU2cHh9Lm0tNjR7bWFyZ2luOjY0cHh9Lm10LTY0e21hcmdpbi10b3A6NjRweH0ubXItNjR7bWFyZ2luLXJpZ2h0OjY0cHh9Lm1iLTY0e21hcmdpbi1ib3R0b206NjRweH0ubWwtNjR7bWFyZ2luLWxlZnQ6NjRweH0ucC0we3BhZGRpbmc6MH0ucHQtMHtwYWRkaW5nLXRvcDowfS5wci0we3BhZGRpbmctcmlnaHQ6MH0ucGItMHtwYWRkaW5nLWJvdHRvbTowfS5wbC0we3BhZGRpbmctbGVmdDowfS5wLTh7cGFkZGluZzo4cHh9LnB0LTh7cGFkZGluZy10b3A6OHB4fS5wci04e3BhZGRpbmctcmlnaHQ6OHB4fS5wYi04e3BhZGRpbmctYm90dG9tOjhweH0ucGwtOHtwYWRkaW5nLWxlZnQ6OHB4fS5wLTE2e3BhZGRpbmc6MTZweH0ucHQtMTZ7cGFkZGluZy10b3A6MTZweH0ucHItMTZ7cGFkZGluZy1yaWdodDoxNnB4fS5wYi0xNntwYWRkaW5nLWJvdHRvbToxNnB4fS5wbC0xNntwYWRkaW5nLWxlZnQ6MTZweH0ucC0yNHtwYWRkaW5nOjI0cHh9LnB0LTI0e3BhZGRpbmctdG9wOjI0cHh9LnByLTI0e3BhZGRpbmctcmlnaHQ6MjRweH0ucGItMjR7cGFkZGluZy1ib3R0b206MjRweH0ucGwtMjR7cGFkZGluZy1sZWZ0OjI0cHh9LnAtMzJ7cGFkZGluZzozMnB4fS5wdC0zMntwYWRkaW5nLXRvcDozMnB4fS5wci0zMntwYWRkaW5nLXJpZ2h0OjMycHh9LnBiLTMye3BhZGRpbmctYm90dG9tOjMycHh9LnBsLTMye3BhZGRpbmctbGVmdDozMnB4fS5wLTQwe3BhZGRpbmc6NDBweH0ucHQtNDB7cGFkZGluZy10b3A6NDBweH0ucHItNDB7cGFkZGluZy1yaWdodDo0MHB4fS5wYi00MHtwYWRkaW5nLWJvdHRvbTo0MHB4fS5wbC00MHtwYWRkaW5nLWxlZnQ6NDBweH0ucC00OHtwYWRkaW5nOjQ4cHh9LnB0LTQ4e3BhZGRpbmctdG9wOjQ4cHh9LnByLTQ4e3BhZGRpbmctcmlnaHQ6NDhweH0ucGItNDh7cGFkZGluZy1ib3R0b206NDhweH0ucGwtNDh7cGFkZGluZy1sZWZ0OjQ4cHh9LnAtNTZ7cGFkZGluZzo1NnB4fS5wdC01NntwYWRkaW5nLXRvcDo1NnB4fS5wci01NntwYWRkaW5nLXJpZ2h0OjU2cHh9LnBiLTU2e3BhZGRpbmctYm90dG9tOjU2cHh9LnBsLTU2e3BhZGRpbmctbGVmdDo1NnB4fS5wLTY0e3BhZGRpbmc6NjRweH0ucHQtNjR7cGFkZGluZy10b3A6NjRweH0ucHItNjR7cGFkZGluZy1yaWdodDo2NHB4fS5wYi02NHtwYWRkaW5nLWJvdHRvbTo2NHB4fS5wbC02NHtwYWRkaW5nLWxlZnQ6NjRweH0uc3IgLmhhcy1hbmltYXRpb25zIC5pcy1yZXZlYWxpbmd7dmlzaWJpbGl0eTpoaWRkZW59LmJ1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4O2ZvbnQtc2l6ZToxNHB4O2xldHRlci1zcGFjaW5nOjBweDtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MTZweDt0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM3RTZFRTYgIWltcG9ydGFudDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjJweDtjdXJzb3I6cG9pbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MTZweCA0MHB4O2hlaWdodDo0OHB4O3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uYnV0dG9uOmFjdGl2ZXtvdXRsaW5lOjB9LmJ1dHRvbjo6YmVmb3Jle2JvcmRlci1yYWRpdXM6MnB4fS5idXR0b24tc2hhZG93e3Bvc2l0aW9uOnJlbGF0aXZlfS5idXR0b24tc2hhZG93OjpiZWZvcmV7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtib3gtc2hhZG93OjAgOHB4IDE2cHggcmdiYSgyMiwzMCw0MiwwLjEyKTttaXgtYmxlbmQtbW9kZTptdWx0aXBseTt0cmFuc2l0aW9uOmJveC1zaGFkb3cgLjE1cyBlYXNlfS5idXR0b24tc2hhZG93OmhvdmVyOjpiZWZvcmV7Ym94LXNoYWRvdzowIDhweCAxNnB4IHJnYmEoMjIsMzAsNDIsMC4xNil9LmJ1dHRvbi1zbXtwYWRkaW5nOjhweCAyNHB4O2hlaWdodDozMnB4fS5idXR0b24tc20uYnV0dG9uLXNoYWRvdzo6YmVmb3Jle2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDIyLDMwLDQyLDAuMTIpfS5idXR0b24tc20uYnV0dG9uLXNoYWRvdzpob3Zlcjo6YmVmb3Jle2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDIyLDMwLDQyLDAuMTYpfS5idXR0b24tcHJpbWFyeSwuYnV0dG9uLXNlY29uZGFyeXtjb2xvcjojZmZmICFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZX0uYnV0dG9uLXByaW1hcnl7YmFja2dyb3VuZDojN0U2RUU2fS5idXR0b24tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiM4Njc3ZTh9LmJ1dHRvbi1wcmltYXJ5LmJ1dHRvbi1zaGFkb3c6OmJlZm9yZXtib3gtc2hhZG93OjAgOHB4IDE2cHggcmdiYSgxMjYsMTEwLDIzMCwwLjI0KX0uYnV0dG9uLXByaW1hcnkuYnV0dG9uLXNoYWRvdzpob3Zlcjo6YmVmb3Jle2JveC1zaGFkb3c6MCA4cHggMTZweCByZ2JhKDEyNiwxMTAsMjMwLDAuMzIpfS5idXR0b24tcHJpbWFyeSAuYnV0dG9uLXNtLmJ1dHRvbi1zaGFkb3c6OmJlZm9yZXtib3gtc2hhZG93OjAgNHB4IDE2cHggcmdiYSgxMjYsMTEwLDIzMCwwLjI0KX0uYnV0dG9uLXByaW1hcnkgLmJ1dHRvbi1zbS5idXR0b24tc2hhZG93OmhvdmVyOjpiZWZvcmV7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMTI2LDExMCwyMzAsMC4zMil9LmJ1dHRvbi1zZWNvbmRhcnl7YmFja2dyb3VuZDojNUFFMEQyfS5idXR0b24tc2Vjb25kYXJ5OmhvdmVye2JhY2tncm91bmQ6IzY3ZTJkNn0uYnV0dG9uLXNlY29uZGFyeS5idXR0b24tc2hhZG93OjpiZWZvcmV7Ym94LXNoYWRvdzowIDhweCAxNnB4IHJnYmEoOTAsMjI0LDIxMCwwLjI0KX0uYnV0dG9uLXNlY29uZGFyeS5idXR0b24tc2hhZG93OmhvdmVyOjpiZWZvcmV7Ym94LXNoYWRvdzowIDhweCAxNnB4IHJnYmEoOTAsMjI0LDIxMCwwLjMyKX0uYnV0dG9uLXNlY29uZGFyeSAuYnV0dG9uLXNtLmJ1dHRvbi1zaGFkb3c6OmJlZm9yZXtib3gtc2hhZG93OjAgNHB4IDE2cHggcmdiYSg5MCwyMjQsMjEwLDAuMjQpfS5idXR0b24tc2Vjb25kYXJ5IC5idXR0b24tc20uYnV0dG9uLXNoYWRvdzpob3Zlcjo6YmVmb3Jle2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDkwLDIyNCwyMTAsMC4zMil9LmJ1dHRvbi1ibG9ja3tkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJX1AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpey5idXR0b24td2lkZS1tb2JpbGV7d2lkdGg6MTAwJTttYXgtd2lkdGg6MjgwcHh9fS5zaXRlLWhlYWRlcntwYWRkaW5nOjI0cHggMDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTt6LWluZGV4OjF9LnNpdGUtaGVhZGVyLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXJ9LmhlYWRlci1saW5rc3tkaXNwbGF5OmlubGluZS1mbGV4fS5oZWFkZXItbGlua3MgbGl7ZGlzcGxheTppbmxpbmUtZmxleH0uaGVhZGVyLWxpbmtzIGE6bm90KC5idXR0b24pe2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjI0cHg7bGV0dGVyLXNwYWNpbmc6LTAuMXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuOCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RleHQtZGVjb3JhdGlvbjpub25lO2xpbmUtaGVpZ2h0OjE2cHg7cGFkZGluZzo4cHggMjRweH0uaGVhZGVyLWxpbmtzIGE6bm90KC5idXR0b24pOmhvdmVyLC5oZWFkZXItbGlua3MgYTpub3QoLmJ1dHRvbik6YWN0aXZle2NvbG9yOiNmZmZ9Lmhlcm97cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy10b3A6MTI4cHg7cGFkZGluZy1ib3R0b206ODBweDt6LWluZGV4OjB9Lmhlcm86OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO2JhY2tncm91bmQ6IzE2MUUyQTt6LWluZGV4Oi0yfS5oZXJvOjphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6Y2FsYyg1MCUgLSAzMjBweCk7d2lkdGg6NjQwcHg7aGVpZ2h0OjEzNnB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiLi4vaW1hZ2VzL2hlcm8taWxsdXN0cmF0aW9uLnN2Z1wiKTtiYWNrZ3JvdW5kLXNpemU6NjQwcHggMTM2cHg7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3otaW5kZXg6LTF9Lmhlcm8tY29weXtwb3NpdGlvbjpyZWxhdGl2ZX1AbWVkaWEgKG1pbi13aWR0aDogNjQxcHgpey5oZXJve3BhZGRpbmctdG9wOjE2MHB4O3BhZGRpbmctYm90dG9tOjEyOHB4fS5oZXJvOjphZnRlcntsZWZ0OmNhbGMoNTAlIC0gNzIwcHgpO3dpZHRoOjE0NDBweDtoZWlnaHQ6MzA3cHg7YmFja2dyb3VuZC1zaXplOjE0NDBweCAzMDdweH0uaGVyby1wYXJhZ3JhcGh7cGFkZGluZy1sZWZ0OjcycHg7cGFkZGluZy1yaWdodDo3MnB4fX0uaGFzLWFuaW1hdGlvbnMgLmhlcm86OmJlZm9yZSwuaGFzLWFuaW1hdGlvbnMgLmhlcm86OmFmdGVyLC5oYXMtYW5pbWF0aW9ucyAuc2l0ZS1oZWFkZXIsLmhhcy1hbmltYXRpb25zIC5oZXJvLXRpdGxlLC5oYXMtYW5pbWF0aW9ucyAuaGVyby1wYXJhZ3JhcGgsLmhhcy1hbmltYXRpb25zIC5oZXJvLWN0YXtvcGFjaXR5OjB9Lmhhcy1hbmltYXRpb25zLmlzLWxvYWRlZCAuaGVybzo6YmVmb3Jle2FuaW1hdGlvbjpoZXJvQmcgMC42cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSBmb3J3YXJkc30uaGFzLWFuaW1hdGlvbnMuaXMtbG9hZGVkIC5oZXJvOjphZnRlcnthbmltYXRpb246aGVyb0ZhZGVJbiAuNnMgZWFzZSBmb3J3YXJkcyAuM3N9Lmhhcy1hbmltYXRpb25zLmlzLWxvYWRlZCAuc2l0ZS1oZWFkZXJ7YW5pbWF0aW9uOmhlcm9GYWRlSW4gLjZzIGVhc2UgZm9yd2FyZHMgLjNzfS5oYXMtYW5pbWF0aW9ucy5pcy1sb2FkZWQgLmhlcm8tdGl0bGV7YW5pbWF0aW9uOmhlcm9Db250ZW50IDAuNnMgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSkgZm9yd2FyZHMgMC4xNXN9Lmhhcy1hbmltYXRpb25zLmlzLWxvYWRlZCAuaGVyby1wYXJhZ3JhcGh7YW5pbWF0aW9uOmhlcm9Db250ZW50IDAuNnMgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSkgZm9yd2FyZHMgMC4zc30uaGFzLWFuaW1hdGlvbnMuaXMtbG9hZGVkIC5oZXJvLWN0YXthbmltYXRpb246aGVyb0NvbnRlbnQgMC42cyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSBmb3J3YXJkcyAwLjQ1c31Aa2V5ZnJhbWVzIGhlcm9CZ3tmcm9te3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTtvcGFjaXR5OjB9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGhlcm9Db250ZW50e2Zyb217dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTQwcHgpO29wYWNpdHk6MH10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgaGVyb0ZhZGVJbntmcm9te29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fS5mZWF0dXJlcyAuc2VjdGlvbi10aXRsZXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW4tYm90dG9tOjMycHg7bWF4LXdpZHRoOjYyMHB4O21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OmF1dG87ei1pbmRleDowfS5mZWF0dXJlcyAuc2VjdGlvbi10aXRsZTo6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0yMHB4O2xlZnQ6MDt3aWR0aDo3NnB4O2hlaWdodDo4NXB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiLi4vaW1hZ2VzL2ZlYXR1cmVzLXF1b3RlLWlsbHVzdHJhdGlvbi5zdmdcIik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ei1pbmRleDotMX0uZmVhdHVyZXMtaWxsdXN0cmF0aW9ue21hcmdpbi1ib3R0b206MzJweH0uZmVhdHVyZXMtd3JhcHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tcmlnaHQ6LTEycHg7bWFyZ2luLWxlZnQ6LTEycHg7bWFyZ2luLXRvcDotMTZweH0uZmVhdHVyZXMtd3JhcDpsYXN0LW9mLXR5cGV7bWFyZ2luLWJvdHRvbTotMTZweH0uZmVhdHVyZXMtd3JhcDpub3QoOmxhc3Qtb2YtdHlwZSl7bWFyZ2luLWJvdHRvbToxNnB4fS5mZWF0dXJle3BhZGRpbmc6MTZweCAxMnB4O3dpZHRoOjM2NHB4O21heC13aWR0aDozNjRweDtmbGV4LWdyb3c6MX0uZmVhdHVyZS1pbm5lcntoZWlnaHQ6MTAwJX0uZmVhdHVyZS1pY29ue2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfUBtZWRpYSAobWluLXdpZHRoOiA2NDFweCl7LmZlYXR1cmVzIC5zZWN0aW9uLXRpdGxle21hcmdpbi1ib3R0b206NjRweH0uZmVhdHVyZXMgLnNlY3Rpb24tdGl0bGU6OmJlZm9yZXt0b3A6LTQ1cHg7d2lkdGg6ODdweDtoZWlnaHQ6MTEycHh9LmZlYXR1cmVzLWlsbHVzdHJhdGlvbnttYXJnaW4tYm90dG9tOjY0cHh9LmZlYXR1cmVzLXdyYXB7bWFyZ2luLXJpZ2h0Oi0yNHB4O21hcmdpbi1sZWZ0Oi0yNHB4O21hcmdpbi10b3A6LTMycHh9LmZlYXR1cmVzLXdyYXA6bGFzdC1vZi10eXBle21hcmdpbi1ib3R0b206LTMycHh9LmZlYXR1cmVzLXdyYXA6bm90KDpsYXN0LW9mLXR5cGUpe21hcmdpbi1ib3R0b206MzJweH0uZmVhdHVyZXtwYWRkaW5nOjMycHggMjRweDt3aWR0aDozODhweDttYXgtd2lkdGg6Mzg4cHh9fS5mZWF0dXJlcy1leHRlbmRlZC1oZWFkZXJ7bWFyZ2luLWJvdHRvbTozMnB4fS5mZWF0dXJlcy1leHRlbmRlZC13cmFwe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOi0xNnB4fS5mZWF0dXJlcy1leHRlbmRlZC13cmFwOmxhc3Qtb2YtdHlwZXttYXJnaW4tYm90dG9tOi0xNnB4fS5mZWF0dXJlcy1leHRlbmRlZC13cmFwOm5vdCg6bGFzdC1vZi10eXBlKXttYXJnaW4tYm90dG9tOjE2cHh9LmZlYXR1cmUtZXh0ZW5kZWR7cGFkZGluZzoxNnB4IDB9LmZlYXR1cmUtZXh0ZW5kZWQtaW1hZ2V7bWFyZ2luLWJvdHRvbToyNHB4fS5mZWF0dXJlLWV4dGVuZGVkLWltYWdlIGltZywuZmVhdHVyZS1leHRlbmRlZC1pbWFnZSBzdmd7d2lkdGg6MTAwJTttYXgtd2lkdGg6MzYwcHg7aGVpZ2h0OmF1dG87bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bztvdmVyZmxvdzp2aXNpYmxlO2JveC1zaGFkb3c6MCAyMHB4IDQ4cHggcmdiYSgyMiwzMCw0MiwwLjE2KX0uZmVhdHVyZS1leHRlbmRlZC1ib2R5e3RleHQtYWxpZ246Y2VudGVyfUBtZWRpYSAobWluLXdpZHRoOiA2NDFweCl7LmZlYXR1cmVzLWV4dGVuZGVkIC5jb250YWluZXJ7bWF4LXdpZHRoOjg3NnB4fS5mZWF0dXJlcy1leHRlbmRlZCAuc2VjdGlvbi1pbm5lcntwYWRkaW5nLWJvdHRvbToxMDJweH0uZmVhdHVyZXMtZXh0ZW5kZWQgLnNlY3Rpb24tcGFyYWdyYXBoe3BhZGRpbmctbGVmdDo3MnB4O3BhZGRpbmctcmlnaHQ6NzJweDttYXJnaW4tYm90dG9tOjB9LmZlYXR1cmVzLWV4dGVuZGVkLWhlYWRlcnttYXJnaW4tYm90dG9tOjgwcHh9LmZlYXR1cmVzLWV4dGVuZGVkLXdyYXB7bWFyZ2luLXRvcDotNDBweH0uZmVhdHVyZXMtZXh0ZW5kZWQtd3JhcDpsYXN0LW9mLXR5cGV7bWFyZ2luLWJvdHRvbTotNDBweH0uZmVhdHVyZXMtZXh0ZW5kZWQtd3JhcDpub3QoOmxhc3Qtb2YtdHlwZSl7bWFyZ2luLWJvdHRvbTo0MHB4fS5mZWF0dXJlLWV4dGVuZGVke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6NDBweCAwfS5mZWF0dXJlLWV4dGVuZGVkIC5mZWF0dXJlLWV4dGVuZGVkLWltYWdle21hcmdpbi1yaWdodDo0OHB4O21hcmdpbi1ib3R0b206MH0uZmVhdHVyZS1leHRlbmRlZCAuZmVhdHVyZS1leHRlbmRlZC1pbWFnZSBpbWcsLmZlYXR1cmUtZXh0ZW5kZWQgLmZlYXR1cmUtZXh0ZW5kZWQtaW1hZ2Ugc3Zne3dpZHRoOmF1dG87bWF4LXdpZHRoOjQ2MHB4O21hcmdpbi1sZWZ0OjB9LmZlYXR1cmUtZXh0ZW5kZWQ6bnRoLWNoaWxkKG9kZCl7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmZlYXR1cmUtZXh0ZW5kZWQ6bnRoLWNoaWxkKG9kZCkgLmZlYXR1cmUtZXh0ZW5kZWQtaW1hZ2V7b3JkZXI6MTttYXJnaW4tbGVmdDo0OHB4O21hcmdpbi1yaWdodDowfS5mZWF0dXJlLWV4dGVuZGVkOm50aC1jaGlsZChvZGQpIC5mZWF0dXJlLWV4dGVuZGVkLWltYWdlIGltZywuZmVhdHVyZS1leHRlbmRlZDpudGgtY2hpbGQob2RkKSAuZmVhdHVyZS1leHRlbmRlZC1pbWFnZSBzdmd7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6MH0uZmVhdHVyZS1leHRlbmRlZC1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXNocmluazowO3dpZHRoOjM2MHB4O3RleHQtYWxpZ246bGVmdH19QG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCl7LmZlYXR1cmVzLWV4dGVuZGVkIC5jb250YWluZXJ7bWF4LXdpZHRoOjk5NnB4fS5mZWF0dXJlLWV4dGVuZGVkLWJvZHl7d2lkdGg6NDgwcHh9fS5wcmljaW5ne2JhY2tncm91bmQ6IzE2MUUyQTtjb2xvcjojOUVBQkMwfS5wcmljaW5nIC5zZWN0aW9uLXRpdGxle21hcmdpbi1ib3R0b206NDhweH0ucHJpY2luZy10YWJsZXMtd3JhcHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tcmlnaHQ6LTEycHg7bWFyZ2luLWxlZnQ6LTEycHg7bWFyZ2luLXRvcDotMTJweH0ucHJpY2luZy10YWJsZXMtd3JhcDpsYXN0LW9mLXR5cGV7bWFyZ2luLWJvdHRvbTotMTJweH0ucHJpY2luZy10YWJsZXMtd3JhcDpub3QoOmxhc3Qtb2YtdHlwZSl7bWFyZ2luLWJvdHRvbToxMnB4fS5wcmljaW5nLXRhYmxle3BhZGRpbmc6MTJweDt3aWR0aDozNjhweDttYXgtd2lkdGg6MzY4cHg7ZmxleC1ncm93OjF9LnByaWNpbmctdGFibGUtaW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6IzI1MkUzQjtwYWRkaW5nOjI0cHg7aGVpZ2h0OjEwMCV9LnByaWNpbmctdGFibGUtaW5uZXI+Knt3aWR0aDoxMDAlfS5wcmljaW5nLXRhYmxlLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBkYXNoZWQgIzZCN0E5MH0ucHJpY2luZy10YWJsZS1wcmljZXtmb250LWZhbWlseTpcIlBMYXlmYWlyIERpc3BsYXlcIiwgc2Fucy1zZXJpZjtjb2xvcjojZmZmfS5wcmljaW5nLXRhYmxlLXByaWNlLWN1cnJlbmN5e2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OjM0cHg7bGV0dGVyLXNwYWNpbmc6MHB4fUBtZWRpYSAobWluLXdpZHRoOiA2NDFweCl7LnByaWNpbmctdGFibGUtcHJpY2UtY3VycmVuY3l7Zm9udC1zaXplOjMwcHg7bGluZS1oZWlnaHQ6NDBweDtsZXR0ZXItc3BhY2luZzowcHh9fS5wcmljaW5nLXRhYmxlLWZlYXR1cmVzLXRpdGxle2NvbG9yOiNmZmZ9LnByaWNpbmctdGFibGUtZmVhdHVyZXN7bWFyZ2luLWJvdHRvbTo2NHB4fS5wcmljaW5nLXRhYmxlLWZlYXR1cmVzIGxpe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToxMnB4fS5wcmljaW5nLXRhYmxlLWZlYXR1cmVzIGxpOjpiZWZvcmV7Y29udGVudDonJzt3aWR0aDoxNnB4O2hlaWdodDoxM3B4O21hcmdpbi1yaWdodDoxMnB4O2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU1UWWlJR2hsYVdkb2REMGlNVE1pSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrSUNBOGNHRjBhQ0JrUFNKTk5TNDJJRGhNTWk0MElEUXVPQ0F3SURjdU1tdzFMallnTlM0MlRERTJJREl1TkNBeE15NDJJREI2SWlCbWFXeHNQU0lqTlVGRk1FUXlJaUJtYVd4c0xYSjFiR1U5SW1WMlpXNXZaR1FpTHo0OEwzTjJaejQ9KTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LnByaWNpbmctdGFibGUtY3Rhe2FsaWduLXNlbGY6ZmxleC1lbmR9QG1lZGlhIChtaW4td2lkdGg6IDY0MXB4KXsucHJpY2luZyAuc2VjdGlvbi10aXRsZXttYXJnaW4tYm90dG9tOjgwcHh9fS50ZXN0aW1vbmlhbHMgLnNlY3Rpb24tdGl0bGV7bWFyZ2luLWJvdHRvbTo0OHB4fS50ZXN0aW1vbmlhbHMtd3JhcHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tcmlnaHQ6LTEycHg7bWFyZ2luLWxlZnQ6LTEycHg7bWFyZ2luLXRvcDotMTJweH0udGVzdGltb25pYWxzLXdyYXA6bGFzdC1vZi10eXBle21hcmdpbi1ib3R0b206LTEycHh9LnRlc3RpbW9uaWFscy13cmFwOm5vdCg6bGFzdC1vZi10eXBlKXttYXJnaW4tYm90dG9tOjEycHh9LnRlc3RpbW9uaWFse3BhZGRpbmc6MTJweDt3aWR0aDozNjhweDttYXgtd2lkdGg6MzY4cHg7ZmxleC1ncm93OjF9LnRlc3RpbW9uaWFsLWlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzozMnB4IDI0cHg7aGVpZ2h0OjEwMCU7Ym94LXNoYWRvdzowIDIwcHggNDhweCByZ2JhKDIyLDMwLDQyLDAuMTYpfS50ZXN0aW1vbmlhbC1pbm5lcj4qe3dpZHRoOjEwMCV9LnRlc3RpbW9uaWFsLWZvb3RlcntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyfS50ZXN0aW1vbmlhbC1pbWFnZXt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O21hcmdpbi1yaWdodDoxMnB4fS50ZXN0aW1vbmlhbC1pbWFnZSBpbWd7Ym9yZGVyLXJhZGl1czoyMHB4fS50ZXN0aW1vbmlhbC1uYW1le2NvbG9yOiMxNjFFMkF9QG1lZGlhIChtaW4td2lkdGg6IDY0MXB4KXsudGVzdGltb25pYWxzIC5zZWN0aW9uLXRpdGxle21hcmdpbi1ib3R0b206ODBweH19LmN0YXtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmNlbnRlcn0uY3RhIC5zZWN0aW9uLWlubmVye3BhZGRpbmc6MzJweH0uY3RhIC5zZWN0aW9uLXRpdGxle21hcmdpbi1ib3R0b206NDhweDtjb2xvcjojRTVFMUZGICFpbXBvcnRhbnR9LmN0YTo6YmVmb3Jle2NvbnRlbnQ6Jyc7d2lkdGg6MTAwJTtoZWlnaHQ6NTAlO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3R0b206MDtiYWNrZ3JvdW5kOiMxNjFFMkF9LmN0YS1pbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kOiM3RTZFRTY7b3ZlcmZsb3c6aGlkZGVufS5jdGEtaW5uZXI6OmJlZm9yZXtjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjU4cHg7Ym90dG9tOmNhbGMoNTAlIC0gMTU1cHgpO3dpZHRoOjE1NXB4O2hlaWdodDoxNTBweDtiYWNrZ3JvdW5kLWltYWdlOnVybChcIi4uL2ltYWdlcy9jdGEtaWxsdXN0cmF0aW9uLnN2Z1wiKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LmN0YS1pbm5lcj4qe3Bvc2l0aW9uOnJlbGF0aXZlfUBtZWRpYSAobWluLXdpZHRoOiA2NDFweCl7LmN0YXt0ZXh0LWFsaWduOmxlZnR9LmN0YSAuc2VjdGlvbi1pbm5lcntwYWRkaW5nOjY0cHggMzJweH0uY3RhIC5zZWN0aW9uLXRpdGxle21hcmdpbi1ib3R0b206MDtwYWRkaW5nLXJpZ2h0OjI0cHh9LmN0YS1pbm5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5jdGEtaW5uZXI6OmJlZm9yZXtib3R0b206Y2FsYyg1MCUgLSA0MnB4KX19LmlzLWJveGVke2JhY2tncm91bmQ6I2ZmZn0uYm9keS13cmFwe2JhY2tncm91bmQ6I2ZmZjtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4taGVpZ2h0OjEwMHZofS5ib3hlZC1jb250YWluZXJ7bWF4LXdpZHRoOjE0NDBweDttYXJnaW46MCBhdXRvO2JveC1zaGFkb3c6MCAyMHB4IDQ4cHggcmdiYSgyMiwzMCw0MiwwLjE2KX1tYWlue2ZsZXg6MSAwIGF1dG99LnNlY3Rpb24taW5uZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy10b3A6NDhweDtwYWRkaW5nLWJvdHRvbTo0OHB4fUBtZWRpYSAobWluLXdpZHRoOiA2NDFweCl7LnNlY3Rpb24taW5uZXJ7cGFkZGluZy10b3A6ODBweDtwYWRkaW5nLWJvdHRvbTo4MHB4fX0uc2l0ZS1mb290ZXJ7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDtsZXR0ZXItc3BhY2luZzowcHg7YmFja2dyb3VuZDojMTYxRTJBfS5zaXRlLWZvb3RlciBhe2NvbG9yOiM2QjdBOTA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnNpdGUtZm9vdGVyIGE6aG92ZXIsLnNpdGUtZm9vdGVyIGE6YWN0aXZle3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnNpdGUtZm9vdGVyLWlubmVye3BhZGRpbmctdG9wOjQ4cHg7cGFkZGluZy1ib3R0b206MzJweH0uZm9vdGVyLWJyYW5kLC5mb290ZXItc29jaWFsLWxpbmtzLC5mb290ZXItYm90dG9tLWxpbmtzLC5mb290ZXItY29weXJpZ2h0e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5mb290ZXItc29jaWFsLWxpbmtzIGxpK2xpLC5mb290ZXItYm90dG9tLWxpbmtzIGxpK2xpe21hcmdpbi1sZWZ0OjE2cHh9LmZvb3Rlci1zb2NpYWwtbGlua3N7bWFyZ2luLWxlZnQ6LThweH0uZm9vdGVyLXNvY2lhbC1saW5rcyBsaXtkaXNwbGF5OmlubGluZS1mbGV4fS5mb290ZXItc29jaWFsLWxpbmtzIGxpIGF7cGFkZGluZzo4cHh9LnNpdGUtZm9vdGVyLXVuaXQtaW5uZXJ7cGFkZGluZy10b3A6MzJweDtib3JkZXItdG9wOjJweCBzb2xpZCAjMjUyRTNCfS5mb290ZXItdGl0bGV7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo3MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5mb290ZXItdG9wLWxpbmtzIHVse21hcmdpbi1ib3R0b206MzJweH0uZm9vdGVyLXRvcC1saW5rcyBsaXttYXJnaW4tYm90dG9tOjEycHh9LmZvb3Rlci10b3AtbGlua3MgYXtjb2xvcjojOUVBQkMwfS5zaXRlLWZvb3Rlci1ib3R0b217bWFyZ2luLXRvcDo0OHB4fUBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCl7LnNpdGUtZm9vdGVyLXVuaXQ6Zmlyc3Qtb2YtdHlwZSAuc2l0ZS1mb290ZXItdW5pdC1pbm5lcntwYWRkaW5nLXRvcDowO2JvcmRlci10b3A6bm9uZX19QG1lZGlhIChtaW4td2lkdGg6IDY0MXB4KXsuc2l0ZS1mb290ZXItaW5uZXJ7cGFkZGluZy10b3A6NTZweH0uc2l0ZS1mb290ZXItdG9we2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tcmlnaHQ6LTEycHg7bWFyZ2luLWxlZnQ6LTEycHg7bWFyZ2luLXRvcDotMTJweH0uc2l0ZS1mb290ZXItdG9wOmxhc3Qtb2YtdHlwZXttYXJnaW4tYm90dG9tOi0xMnB4fS5zaXRlLWZvb3Rlci10b3A6bm90KDpsYXN0LW9mLXR5cGUpe21hcmdpbi1ib3R0b206MTJweH0uc2l0ZS1mb290ZXItdW5pdHtwYWRkaW5nOjEycHg7ZmxleC1iYXNpczoyNzZweDtmbGV4LWdyb3c6MX0uZm9vdGVyLWJyYW5kLC5mb290ZXItc29jaWFsLWxpbmtze2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5zaXRlLWZvb3Rlci1ib3R0b217ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi10b3A6MjBweH0uZm9vdGVyLWJvdHRvbS1saW5rc3ttYXJnaW4tYm90dG9tOjA7b3JkZXI6MX19XG4iXX0= */ \ No newline at end of file diff --git a/dist/images/5-stars.svg b/dist/images/5-stars.svg deleted file mode 100644 index e4d5195..0000000 --- a/dist/images/5-stars.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/amal_headshot.jpg b/dist/images/amal_headshot.jpg deleted file mode 100644 index 824fafe..0000000 Binary files a/dist/images/amal_headshot.jpg and /dev/null differ diff --git a/dist/images/cta-illustration.svg b/dist/images/cta-illustration.svg deleted file mode 100644 index 8c43387..0000000 --- a/dist/images/cta-illustration.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/digo_pic.jpeg b/dist/images/digo_pic.jpeg deleted file mode 100644 index 705529d..0000000 Binary files a/dist/images/digo_pic.jpeg and /dev/null differ diff --git a/dist/images/feature-01.svg b/dist/images/feature-01.svg deleted file mode 100644 index f41dda9..0000000 --- a/dist/images/feature-01.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/feature-02.svg b/dist/images/feature-02.svg deleted file mode 100644 index e05133d..0000000 --- a/dist/images/feature-02.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/feature-03.svg b/dist/images/feature-03.svg deleted file mode 100644 index c1ca863..0000000 --- a/dist/images/feature-03.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/feature-04.svg b/dist/images/feature-04.svg deleted file mode 100644 index 6d2537a..0000000 --- a/dist/images/feature-04.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/feature-extended-01.svg b/dist/images/feature-extended-01.svg deleted file mode 100644 index e2d84fb..0000000 --- a/dist/images/feature-extended-01.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/feature-extended-02.svg b/dist/images/feature-extended-02.svg deleted file mode 100644 index b45c39b..0000000 --- a/dist/images/feature-extended-02.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/feature-extended-03.svg b/dist/images/feature-extended-03.svg deleted file mode 100644 index e002bd4..0000000 --- a/dist/images/feature-extended-03.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/features-illustration.svg b/dist/images/features-illustration.svg deleted file mode 100644 index b0c3d96..0000000 --- a/dist/images/features-illustration.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/features-quote-illustration.svg b/dist/images/features-quote-illustration.svg deleted file mode 100644 index 35abedf..0000000 --- a/dist/images/features-quote-illustration.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/grant_detail.png b/dist/images/grant_detail.png deleted file mode 100644 index b07deab..0000000 Binary files a/dist/images/grant_detail.png and /dev/null differ diff --git a/dist/images/grants_list.png b/dist/images/grants_list.png deleted file mode 100644 index f3d80bc..0000000 Binary files a/dist/images/grants_list.png and /dev/null differ diff --git a/dist/images/hero-illustration.svg b/dist/images/hero-illustration.svg deleted file mode 100644 index b4e0280..0000000 --- a/dist/images/hero-illustration.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/logo.svg b/dist/images/logo.svg deleted file mode 100644 index bb5b543..0000000 --- a/dist/images/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dist/images/logo_green.png b/dist/images/logo_green.png deleted file mode 100644 index 4e6cde2..0000000 Binary files a/dist/images/logo_green.png and /dev/null differ diff --git a/dist/images/logo_white.png b/dist/images/logo_white.png deleted file mode 100644 index e3663a4..0000000 Binary files a/dist/images/logo_white.png and /dev/null differ diff --git a/dist/images/payment_history.png b/dist/images/payment_history.png deleted file mode 100644 index 5e93ba8..0000000 Binary files a/dist/images/payment_history.png and /dev/null differ diff --git a/dist/images/testimonial-01.JPG b/dist/images/testimonial-01.JPG deleted file mode 100644 index 0d87e7f..0000000 Binary files a/dist/images/testimonial-01.JPG and /dev/null differ diff --git a/dist/images/testimonial-01.png b/dist/images/testimonial-01.png deleted file mode 100644 index b5c612b..0000000 Binary files a/dist/images/testimonial-01.png and /dev/null differ diff --git a/dist/images/testimonial-02.png b/dist/images/testimonial-02.png deleted file mode 100644 index c982c2d..0000000 Binary files a/dist/images/testimonial-02.png and /dev/null differ diff --git a/dist/images/testimonial-03.png b/dist/images/testimonial-03.png deleted file mode 100644 index 47b4132..0000000 Binary files a/dist/images/testimonial-03.png and /dev/null differ diff --git a/dist/js/main.min.js b/dist/js/main.min.js deleted file mode 100644 index 7321f38..0000000 --- a/dist/js/main.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(){const e=document,t=e.documentElement,i=e.body,n=window.sr=ScrollReveal({mobile:!1});t.classList.remove("no-js"),t.classList.add("js"),window.addEventListener("load",function(){i.classList.add("is-loaded")}),i.classList.contains("has-animations")&&window.addEventListener("load",function(){n.reveal(".features .section-title, .features-illustration, .feature",{delay:300,duration:600,distance:"60px",easing:"cubic-bezier(0.215, 0.61, 0.355, 1)",origin:"bottom",viewFactor:.2,interval:150}),n.reveal(".feature-extended:nth-child(odd) .feature-extended-body, .feature-extended:nth-child(even) .feature-extended-image",{duration:600,distance:"40px",easing:"cubic-bezier(0.215, 0.61, 0.355, 1)",origin:"right",viewFactor:.5}),n.reveal(".feature-extended:nth-child(even) .feature-extended-body, .feature-extended:nth-child(odd) .feature-extended-image",{duration:600,distance:"40px",easing:"cubic-bezier(0.215, 0.61, 0.355, 1)",origin:"left",viewFactor:.5}),n.reveal(".pricing-table, .testimonial, .cta-inner",{duration:600,distance:"60px",easing:"cubic-bezier(0.215, 0.61, 0.355, 1)",origin:"bottom",viewFactor:.5,interval:150})})}(); \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index af0fc63..0000000 --- a/index.html +++ /dev/null @@ -1,582 +0,0 @@ - - - - - - - - - Ucharify - - - - - - - - - - - - - - - -
- - -
-
-
-
-
-

Give with peace of mind

-

Our platform connects donors with small charities, - maximizing - the impact from every dollar. Reach out to more places and lives, see the impact - every - day. -

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

Giving in the U.S. stuck at 2% of GDP for - the last 50 years. -

-
- - -
- -
-
- -
-
-

What we offer

-
-
-
-
- Feature 01 -
-
-

Value Matching

-

Focus on the people you care about most. - Give to - organizations that understand you.

-
-
-
-
-
-
- Feature 02 -
-
-

Payments

-

We're ensuring that it safely reaches the right hands, - and - is easy to track.

-
-
-
-
-
-
-
-
- Feature 03 -
-
-

Trust and Engagement

-

Build a relationship with your charities for long term - impact. -

-
-
-
-
-
-
- Feature 04 -
-
-

Global Impact

-

Easily distribute your money so that you can reach - more people.

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

How it Works

-

Your one place to track and manage all of your grants, and - maximize - your impact globally.

-
-
-
-
-
-
- Feature extended 01 -
-
-

Create a Grant

-

Choose causes and regions you want to support. - Look at - the - charities you match according to personal values, performance, and artificial intelligence indicators. -

- Or use our charity finder to discover - more ways you can contribute to places and people you want to support.

-
-
-
-
- Feature extended 02 -
-
-

Stay engaged with the people you support

-

Keep track of where your money is being used, by seeing the progress of the projects - that your involved in. View live media updates along with other transparent metrics from charities. -

-
-
-
-
- Feature extended 03 -
-
-

We keep payments simple

-

Whether you create one grant for a few charities or twenty grants - for a hundred charities, transactions are easy to manage. Come tax - season, - you know where to look.

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

Our Team

-
- - -
-
-
-
-

Having started a charity myself, I understand the challenges small organizations face when raising capital. I want ucharify to solve that gap and serve as an opportunity for charities to get a spotlight, scale, and maximize their potential impacts. Social entrepreneurs can change the world, and I hope ucharify can help make that happen. -

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

The feeling from giving on a consistent basis is - something I want everyone to experience. My family runs a small animal - shelter in - North India; I know that people will be more satisfied supporting - unknown, but purposeful, - missions around - the world. I'm merely a visionary bringing that awareness into the - world. -

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

Living in Brazil, I was fortunate enough to take - part in an initiative aiding foster kids in Sao Paulo. - During my time in the US, I created a connection - between my home America by starting my own fundraiser for - another Brazilian organization, this time dealing with - children's cancer support/research. Ucharify supports the - vision of a global donor network and enables the noblest - patrons to make the highest impact with their contributions. - -

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

Contact us with any - inquiries.

- -
-
-
-
- - -
- - - - - - diff --git a/package-sample.json b/package-sample.json deleted file mode 100644 index fabaeeb..0000000 --- a/package-sample.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "ruby", - "version": "1.0.0", - "description": "Ruby Template", - "author": "Pasquale Vitiello ", - "license": "GPLv3", - "repository": { - "type": "git", - "url": "https://bitbucket.org/pasqualevitiello/ruby.git" - }, - "bugs": { - "url": "https://bitbucket.org/pasqualevitiello/ruby/issues" - }, - "scripts": { - "clean": "rimraf dist/{css/*,js/*,images/*}", - "autoprefixer": "postcss -u autoprefixer -r dist/css/*", - "scss": "node-sass --output-style compressed -o dist/css src/scss", - "lint": "eslint src/js || true", - "lint-scss": "stylelint src/scss/*.scss --syntax scss || true", - "uglify": "mkdirp dist/js -p && uglifyjs src/js/*.js -m -c -o dist/js/main.min.js", - "imagemin": "imagemin src/images/* -o dist/images", - "serve": "browser-sync start --server --files \"dist/css/*.css, dist/js/*.js, **/*.html, !node_modules/**/*.html\"", - "build:css": "run-s lint-scss scss autoprefixer", - "build:js": "run-s lint uglify", - "build:images": "run-s imagemin", - "build": "run-s build:*", - "watch:css": "onchange \"src/scss\" -- run-s build:css", - "watch:js": "onchange \"src/js\" -- run-s build:js", - "watch:images": "onchange \"src/images\" -- run-s build:images", - "watch": "run-p serve watch:*", - "postinstall": "run-s build watch" - }, - "devDependencies": { - "autoprefixer": "^9.0.1", - "browser-sync": "^2.12.8", - "eslint": "^5.2.0", - "eslint-config-standard": "^12.0.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-node": "^7.0.1", - "eslint-plugin-promise": "^3.8.0", - "eslint-plugin-standard": "^3.1.0", - "imagemin-cli": "^3.0.0", - "mkdirp": "^0.5.1", - "node-sass": "^4.9.2", - "npm-run-all": "^4.1.3", - "onchange": "^4.1.0", - "postcss-cli": "^6.0.0", - "rimraf": "^2.5.4", - "stylelint": "^9.4.0", - "uglify-es": "^3.3.10" - }, - "homepage": "https://bitbucket.org/pasqualevitiello/ruby#readme", - "main": ".eslintrc.js" -} diff --git a/src/images/5-stars.svg b/src/images/5-stars.svg deleted file mode 100644 index b7b90dc..0000000 --- a/src/images/5-stars.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/images/cta-illustration.svg b/src/images/cta-illustration.svg deleted file mode 100644 index d7136ac..0000000 --- a/src/images/cta-illustration.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/images/feature-01.svg b/src/images/feature-01.svg deleted file mode 100644 index c932a0a..0000000 --- a/src/images/feature-01.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/images/feature-02.svg b/src/images/feature-02.svg deleted file mode 100644 index a3ef853..0000000 --- a/src/images/feature-02.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/images/feature-03.svg b/src/images/feature-03.svg deleted file mode 100644 index b3a6747..0000000 --- a/src/images/feature-03.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/images/feature-04.svg b/src/images/feature-04.svg deleted file mode 100644 index 7a7f839..0000000 --- a/src/images/feature-04.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/images/feature-extended-01.svg b/src/images/feature-extended-01.svg deleted file mode 100644 index acb3d75..0000000 --- a/src/images/feature-extended-01.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/images/feature-extended-02.svg b/src/images/feature-extended-02.svg deleted file mode 100644 index 58dbe42..0000000 --- a/src/images/feature-extended-02.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/images/feature-extended-03.svg b/src/images/feature-extended-03.svg deleted file mode 100644 index a064a7f..0000000 --- a/src/images/feature-extended-03.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/images/features-quote-illustration.svg b/src/images/features-quote-illustration.svg deleted file mode 100644 index 437079a..0000000 --- a/src/images/features-quote-illustration.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/images/hero-illustration.svg b/src/images/hero-illustration.svg deleted file mode 100644 index d01caa6..0000000 --- a/src/images/hero-illustration.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/images/logo.svg b/src/images/logo.svg deleted file mode 100644 index a99177d..0000000 --- a/src/images/logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/images/testimonial-01.png b/src/images/testimonial-01.png deleted file mode 100644 index b5c612b..0000000 Binary files a/src/images/testimonial-01.png and /dev/null differ diff --git a/src/images/testimonial-02.png b/src/images/testimonial-02.png deleted file mode 100644 index c982c2d..0000000 Binary files a/src/images/testimonial-02.png and /dev/null differ diff --git a/src/images/testimonial-03.png b/src/images/testimonial-03.png deleted file mode 100644 index 47b4132..0000000 Binary files a/src/images/testimonial-03.png and /dev/null differ diff --git a/src/js/charts.js b/src/js/charts.js deleted file mode 100644 index 9547d13..0000000 --- a/src/js/charts.js +++ /dev/null @@ -1,73 +0,0 @@ - -var ctx = document.getElementById("gdpChart"); - -var gdpChart = new Chart(ctx, { - type: 'line', - data: { - labels: ["1970", "1980", "1990", "2000", "2010", "2020"], - datasets: [{ - label: 'Percent of U.S. GDP involving Giving', - data: [2, 4, 1, 6, 4, 2], - backgroundColor: [ - 'rgba(255, 99, 132, 0.2)', - 'rgba(54, 162, 235, 0.2)', - 'rgba(255, 206, 86, 0.2)', - 'rgba(75, 192, 192, 0.2)', - 'rgba(153, 102, 255, 0.2)', - 'rgba(255, 159, 64, 0.2)' - ], - borderColor: [ - 'rgba(255,99,132,1)', - 'rgba(54, 162, 235, 1)', - 'rgba(255, 206, 86, 1)', - 'rgba(75, 192, 192, 1)', - 'rgba(153, 102, 255, 1)', - 'rgba(255, 159, 64, 1)' - ], - borderWidth: 1 - }] - }, - options: { - scales: { - yAxes: [{ - ticks: { - beginAtZero:true, - min: 0, - max: 100 - } - }] - }, - legend: { - labels: { - defaultFontSize: 200 - } - } - } -}); - -var ctx_doughnut = document.getElementById("distributionChart"); -var data_doughnut = { - datasets: [{ - label: "Spending in sectors (billions)", - data: [40, 20, 30], - backgroundColor: ["#3e95cd", "#8e5ea2","#3cba9f","#e8c3b9","#c45850"], - }], - - // These labels appear in the legend and in the tooltips when hovering different arcs - labels: [ - 'Hunger', - 'Education', - 'Disaster' - ] -}; - -var myDoughnutChart = new Chart(ctx_doughnut, { - type: 'doughnut', - data: data_doughnut, - options: { - title: { - display: true, - text: 'Spending in different sectors (billions)' - } - } -}); \ No newline at end of file diff --git a/src/js/main.js b/src/js/main.js deleted file mode 100644 index ec2cbfd..0000000 --- a/src/js/main.js +++ /dev/null @@ -1,53 +0,0 @@ -(function () { - const doc = document - const rootEl = doc.documentElement - const body = doc.body - /* global ScrollReveal */ - const sr = window.sr = ScrollReveal({ mobile: false }) - - rootEl.classList.remove('no-js') - rootEl.classList.add('js') - - window.addEventListener('load', function () { - body.classList.add('is-loaded') - }) - - // Reveal animations - function revealAnimations () { - sr.reveal('.features .section-title, .features-illustration, .feature', { - delay: 300, - duration: 600, - distance: '60px', - easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', - origin: 'bottom', - viewFactor: 0.2, - interval: 150 - }) - sr.reveal('.feature-extended:nth-child(odd) .feature-extended-body, .feature-extended:nth-child(even) .feature-extended-image', { - duration: 600, - distance: '40px', - easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', - origin: 'right', - viewFactor: 0.5 - }) - sr.reveal('.feature-extended:nth-child(even) .feature-extended-body, .feature-extended:nth-child(odd) .feature-extended-image', { - duration: 600, - distance: '40px', - easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', - origin: 'left', - viewFactor: 0.5 - }) - sr.reveal('.pricing-table, .testimonial, .cta-inner', { - duration: 600, - distance: '60px', - easing: 'cubic-bezier(0.215, 0.61, 0.355, 1)', - origin: 'bottom', - viewFactor: 0.5, - interval: 150 - }) - } - - if (body.classList.contains('has-animations')) { - window.addEventListener('load', revealAnimations) - } -}()) diff --git a/src/scss/_normalize.scss b/src/scss/_normalize.scss deleted file mode 100644 index 8025dce..0000000 --- a/src/scss/_normalize.scss +++ /dev/null @@ -1,231 +0,0 @@ -html { - line-height: 1.15; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -body { - margin: 0; -} - -article, -aside, -footer, -header, -nav, -section { - display: block; -} - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -figcaption, -figure, -main { - display: block; -} - -figure { - margin: 1em 40px; -} - -hr { - box-sizing: content-box; - height: 0; - overflow: visible; -} - -pre { - font-family: monospace, monospace; - font-size: 1em; -} - -a { - background-color: transparent; - -webkit-text-decoration-skip: objects; -} - -abbr[title] { - border-bottom: none; - text-decoration: underline; - text-decoration: underline dotted; -} - -b, -strong { - font-weight: inherit; -} - -b, -strong { - font-weight: bolder; -} - -code, -kbd, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -dfn { - font-style: italic; -} - -mark { - background-color: #ff0; - color: #000; -} - -small { - font-size: 80%; -} - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -audio, -video { - display: inline-block; -} - -audio:not([controls]) { - display: none; - height: 0; -} - -img { - border-style: none; -} - -svg:not(:root) { - overflow: hidden; -} - -button, -input, -optgroup, -select, -textarea { - font-family: sans-serif; - font-size: 100%; - line-height: 1.15; - margin: 0; -} - -button, -input { - overflow: visible; -} - -button, -select { - text-transform: none; -} - -button, -html [type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; -} - -progress { - display: inline-block; - vertical-align: baseline; -} - -textarea { - overflow: auto; -} - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; - padding: 0; -} - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -[type="search"]::-webkit-search-cancel-button, -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} - -details, -menu { - display: block; -} - -summary { - display: list-item; -} - -canvas { - display: inline-block; -} - -template { - display: none; -} - -[hidden] { - display: none; -} \ No newline at end of file diff --git a/src/scss/abstracts/_functions.scss b/src/scss/abstracts/_functions.scss deleted file mode 100644 index 6aa6a1c..0000000 --- a/src/scss/abstracts/_functions.scss +++ /dev/null @@ -1,55 +0,0 @@ -// -------------------------------------------------------------------- -// Retrieve Font Size ------------------------------------------------- -// Used in _mixins.scss [@mixin font-size] ---------------------------- -// -------------------------------------------------------------------- -@function get-font-size($size, $elem) { - @return nth(map-get(map-get($font__scale, $elem), $size), 1); -} - -// -------------------------------------------------------------------- -// Retrieve Line Height ----------------------------------------------- -// Used in _mixins.scss [@mixin font-size] ---------------------------- -// -------------------------------------------------------------------- -@function get-line-height($size, $elem) { - @return nth(map-get(map-get($font__scale, $elem), $size), 2); -} - -// -------------------------------------------------------------------- -// Retrieve Kerning --------------------------------------------------- -// Used in _mixins.scss [@mixin font-size] ---------------------------- -// -------------------------------------------------------------------- -@function get-kerning($size, $elem) { - @return nth(map-get(map-get($font__scale, $elem), $size), 3); -} - -// -------------------------------------------------------------------- -// Retrieve Font Family ----------------------------------------------- -// Used in _mixins.scss [@mixin font-family] -------------------------- -// -------------------------------------------------------------------- -@function get-font-family($elem) { - @return map-get($font__family, $elem); -} - -// -------------------------------------------------------------------- -// Retrieve Font Weight ----------------------------------------------- -// Used in _mixins.scss [@mixin font-weight] -------------------------- -// -------------------------------------------------------------------- -@function get-font-weight($elem) { - @return map-get($font__weight, $elem); -} - -// -------------------------------------------------------------------- -// Retrieve Padding of Content Area Elements -------------------------- -// Used in _mixins.scss [@mixin font-size] ---------------------------- -// -------------------------------------------------------------------- -@function get-content-padding($elem) { - @return map-get($content__padding, $elem); -} - -// -------------------------------------------------------------------- -// Retrieve Colors ---------------------------------------------------- -// Usage: color(typography, 1) ---------------------------------------------- -// -------------------------------------------------------------------- -@function color($elem, $variant) { - @return map-get(map-get($color, $elem), $variant); -} diff --git a/src/scss/abstracts/_include-media.scss b/src/scss/abstracts/_include-media.scss deleted file mode 100644 index bb5ccd5..0000000 --- a/src/scss/abstracts/_include-media.scss +++ /dev/null @@ -1,567 +0,0 @@ -@charset "UTF-8"; - -// _ _ _ _ _ -// (_) | | | | | (_) -// _ _ __ ___| |_ _ __| | ___ _ __ ___ ___ __| |_ __ _ -// | | '_ \ / __| | | | |/ _` |/ _ \ | '_ ` _ \ / _ \/ _` | |/ _` | -// | | | | | (__| | |_| | (_| | __/ | | | | | | __/ (_| | | (_| | -// |_|_| |_|\___|_|\__,_|\__,_|\___| |_| |_| |_|\___|\__,_|_|\__,_| -// -// Simple, elegant and maintainable media queries in Sass -// v1.4.9 -// -// http://include-media.com -// -// Authors: Eduardo Boucas (@eduardoboucas) -// Hugo Giraudel (@hugogiraudel) -// -// This project is licensed under the terms of the MIT license - - -//// -/// include-media library public configuration -/// @author Eduardo Boucas -/// @access public -//// - - -/// -/// Creates a list of global breakpoints -/// -/// @example scss - Creates a single breakpoint with the label `phone` -/// $breakpoints: ('phone': 320px); -/// -$breakpoints: ( - 'small': 480px, - 'medium': 640px, - 'large': 1024px, -) !default; - - -/// -/// Creates a list of static expressions or media types -/// -/// @example scss - Creates a single media type (screen) -/// $media-expressions: ('screen': 'screen'); -/// -/// @example scss - Creates a static expression with logical disjunction (OR operator) -/// $media-expressions: ( -/// 'retina2x': '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)' -/// ); -/// -$media-expressions: ( - 'screen': 'screen', - 'print': 'print', - 'handheld': 'handheld', - 'landscape': '(orientation: landscape)', - 'portrait': '(orientation: portrait)', - 'retina2x': '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)', - 'retina3x': '(-webkit-min-device-pixel-ratio: 3), (min-resolution: 350dpi), (min-resolution: 3dppx)' -) !default; - - -/// -/// Defines a number to be added or subtracted from each unit when declaring breakpoints with exclusive intervals -/// -/// @example scss - Interval for pixels is defined as `1` by default -/// @include media('>128px') {} -/// -/// /* Generates: */ -/// @media (min-width: 129px) {} -/// -/// @example scss - Interval for ems is defined as `0.01` by default -/// @include media('>20em') {} -/// -/// /* Generates: */ -/// @media (min-width: 20.01em) {} -/// -/// @example scss - Interval for rems is defined as `0.1` by default, to be used with `font-size: 62.5%;` -/// @include media('>2.0rem') {} -/// -/// /* Generates: */ -/// @media (min-width: 2.1rem) {} -/// -$unit-intervals: ( - 'px': 1, - 'em': 0.01, - 'rem': 0.1, - '': 0 -) !default; - -/// -/// Defines whether support for media queries is available, useful for creating separate stylesheets -/// for browsers that don't support media queries. -/// -/// @example scss - Disables support for media queries -/// $im-media-support: false; -/// @include media('>=tablet') { -/// .foo { -/// color: tomato; -/// } -/// } -/// -/// /* Generates: */ -/// .foo { -/// color: tomato; -/// } -/// -$im-media-support: true !default; - -/// -/// Selects which breakpoint to emulate when support for media queries is disabled. Media queries that start at or -/// intercept the breakpoint will be displayed, any others will be ignored. -/// -/// @example scss - This media query will show because it intercepts the static breakpoint -/// $im-media-support: false; -/// $im-no-media-breakpoint: 'desktop'; -/// @include media('>=tablet') { -/// .foo { -/// color: tomato; -/// } -/// } -/// -/// /* Generates: */ -/// .foo { -/// color: tomato; -/// } -/// -/// @example scss - This media query will NOT show because it does not intercept the desktop breakpoint -/// $im-media-support: false; -/// $im-no-media-breakpoint: 'tablet'; -/// @include media('>=desktop') { -/// .foo { -/// color: tomato; -/// } -/// } -/// -/// /* No output */ -/// -$im-no-media-breakpoint: 'desktop' !default; - -/// -/// Selects which media expressions are allowed in an expression for it to be used when media queries -/// are not supported. -/// -/// @example scss - This media query will show because it intercepts the static breakpoint and contains only accepted media expressions -/// $im-media-support: false; -/// $im-no-media-breakpoint: 'desktop'; -/// $im-no-media-expressions: ('screen'); -/// @include media('>=tablet', 'screen') { -/// .foo { -/// color: tomato; -/// } -/// } -/// -/// /* Generates: */ -/// .foo { -/// color: tomato; -/// } -/// -/// @example scss - This media query will NOT show because it intercepts the static breakpoint but contains a media expression that is not accepted -/// $im-media-support: false; -/// $im-no-media-breakpoint: 'desktop'; -/// $im-no-media-expressions: ('screen'); -/// @include media('>=tablet', 'retina2x') { -/// .foo { -/// color: tomato; -/// } -/// } -/// -/// /* No output */ -/// -$im-no-media-expressions: ('screen', 'portrait', 'landscape') !default; - -//// -/// Cross-engine logging engine -/// @author Hugo Giraudel -/// @access private -//// - - -/// -/// Log a message either with `@error` if supported -/// else with `@warn`, using `feature-exists('at-error')` -/// to detect support. -/// -/// @param {String} $message - Message to log -/// -@function im-log($message) { - @if feature-exists('at-error') { - @error $message; - } @else { - @warn $message; - $_: noop(); - } - - @return $message; -} - - -/// -/// Wrapper mixin for the log function so it can be used with a more friendly -/// API than `@if im-log('..') {}` or `$_: im-log('..')`. Basically, use the function -/// within functions because it is not possible to include a mixin in a function -/// and use the mixin everywhere else because it's much more elegant. -/// -/// @param {String} $message - Message to log -/// -@mixin log($message) { - @if im-log($message) {} -} - - -/// -/// Function with no `@return` called next to `@warn` in Sass 3.3 -/// to trigger a compiling error and stop the process. -/// -@function noop() {} - -/// -/// Determines whether a list of conditions is intercepted by the static breakpoint. -/// -/// @param {Arglist} $conditions - Media query conditions -/// -/// @return {Boolean} - Returns true if the conditions are intercepted by the static breakpoint -/// -@function im-intercepts-static-breakpoint($conditions...) { - $no-media-breakpoint-value: map-get($breakpoints, $im-no-media-breakpoint); - - @if not $no-media-breakpoint-value { - @if im-log('`#{$im-no-media-breakpoint}` is not a valid breakpoint.') {} - } - - @each $condition in $conditions { - @if not map-has-key($media-expressions, $condition) { - $operator: get-expression-operator($condition); - $prefix: get-expression-prefix($operator); - $value: get-expression-value($condition, $operator); - - @if ($prefix == 'max' and $value <= $no-media-breakpoint-value) or - ($prefix == 'min' and $value > $no-media-breakpoint-value) { - @return false; - } - } @else if not index($im-no-media-expressions, $condition) { - @return false; - } - } - - @return true; -} - -//// -/// Parsing engine -/// @author Hugo Giraudel -/// @access private -//// - - -/// -/// Get operator of an expression -/// -/// @param {String} $expression - Expression to extract operator from -/// -/// @return {String} - Any of `>=`, `>`, `<=`, `<`, `≥`, `≤` -/// -@function get-expression-operator($expression) { - @each $operator in ('>=', '>', '<=', '<', '≥', '≤') { - @if str-index($expression, $operator) { - @return $operator; - } - } - - // It is not possible to include a mixin inside a function, so we have to - // rely on the `im-log(..)` function rather than the `log(..)` mixin. Because - // functions cannot be called anywhere in Sass, we need to hack the call in - // a dummy variable, such as `$_`. If anybody ever raise a scoping issue with - // Sass 3.3, change this line in `@if im-log(..) {}` instead. - $_: im-log('No operator found in `#{$expression}`.'); -} - - -/// -/// Get dimension of an expression, based on a found operator -/// -/// @param {String} $expression - Expression to extract dimension from -/// @param {String} $operator - Operator from `$expression` -/// -/// @return {String} - `width` or `height` (or potentially anything else) -/// -@function get-expression-dimension($expression, $operator) { - $operator-index: str-index($expression, $operator); - $parsed-dimension: str-slice($expression, 0, $operator-index - 1); - $dimension: 'width'; - - @if str-length($parsed-dimension) > 0 { - $dimension: $parsed-dimension; - } - - @return $dimension; -} - - -/// -/// Get dimension prefix based on an operator -/// -/// @param {String} $operator - Operator -/// -/// @return {String} - `min` or `max` -/// -@function get-expression-prefix($operator) { - @return if(index(('<', '<=', '≤'), $operator), 'max', 'min'); -} - - -/// -/// Get value of an expression, based on a found operator -/// -/// @param {String} $expression - Expression to extract value from -/// @param {String} $operator - Operator from `$expression` -/// -/// @return {Number} - A numeric value -/// -@function get-expression-value($expression, $operator) { - $operator-index: str-index($expression, $operator); - $value: str-slice($expression, $operator-index + str-length($operator)); - - @if map-has-key($breakpoints, $value) { - $value: map-get($breakpoints, $value); - } @else { - $value: to-number($value); - } - - $interval: map-get($unit-intervals, unit($value)); - - @if not $interval { - // It is not possible to include a mixin inside a function, so we have to - // rely on the `im-log(..)` function rather than the `log(..)` mixin. Because - // functions cannot be called anywhere in Sass, we need to hack the call in - // a dummy variable, such as `$_`. If anybody ever raise a scoping issue with - // Sass 3.3, change this line in `@if im-log(..) {}` instead. - $_: im-log('Unknown unit `#{unit($value)}`.'); - } - - @if $operator == '>' { - $value: $value + $interval; - } @else if $operator == '<' { - $value: $value - $interval; - } - - @return $value; -} - - -/// -/// Parse an expression to return a valid media-query expression -/// -/// @param {String} $expression - Expression to parse -/// -/// @return {String} - Valid media query -/// -@function parse-expression($expression) { - // If it is part of $media-expressions, it has no operator - // then there is no need to go any further, just return the value - @if map-has-key($media-expressions, $expression) { - @return map-get($media-expressions, $expression); - } - - $operator: get-expression-operator($expression); - $dimension: get-expression-dimension($expression, $operator); - $prefix: get-expression-prefix($operator); - $value: get-expression-value($expression, $operator); - - @return '(#{$prefix}-#{$dimension}: #{$value})'; -} - -/// -/// Slice `$list` between `$start` and `$end` indexes -/// -/// @access private -/// -/// @param {List} $list - List to slice -/// @param {Number} $start [1] - Start index -/// @param {Number} $end [length($list)] - End index -/// -/// @return {List} Sliced list -/// -@function slice($list, $start: 1, $end: length($list)) { - @if length($list) < 1 or $start > $end { - @return (); - } - - $result: (); - - @for $i from $start through $end { - $result: append($result, nth($list, $i)); - } - - @return $result; -} - -//// -/// String to number converter -/// @author Hugo Giraudel -/// @access private -//// - - -/// -/// Casts a string into a number -/// -/// @param {String | Number} $value - Value to be parsed -/// -/// @return {Number} -/// -@function to-number($value) { - @if type-of($value) == 'number' { - @return $value; - } @else if type-of($value) != 'string' { - $_: im-log('Value for `to-number` should be a number or a string.'); - } - - $first-character: str-slice($value, 1, 1); - $result: 0; - $digits: 0; - $minus: ($first-character == '-'); - $numbers: ('0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9); - - // Remove +/- sign if present at first character - @if ($first-character == '+' or $first-character == '-') { - $value: str-slice($value, 2); - } - - @for $i from 1 through str-length($value) { - $character: str-slice($value, $i, $i); - - @if not (index(map-keys($numbers), $character) or $character == '.') { - @return to-length(if($minus, -$result, $result), str-slice($value, $i)) - } - - @if $character == '.' { - $digits: 1; - } @else if $digits == 0 { - $result: $result * 10 + map-get($numbers, $character); - } @else { - $digits: $digits * 10; - $result: $result + map-get($numbers, $character) / $digits; - } - } - - @return if($minus, -$result, $result); -} - - -/// -/// Add `$unit` to `$value` -/// -/// @param {Number} $value - Value to add unit to -/// @param {String} $unit - String representation of the unit -/// -/// @return {Number} - `$value` expressed in `$unit` -/// -@function to-length($value, $unit) { - $units: ('px': 1px, 'cm': 1cm, 'mm': 1mm, '%': 1%, 'ch': 1ch, 'pc': 1pc, 'in': 1in, 'em': 1em, 'rem': 1rem, 'pt': 1pt, 'ex': 1ex, 'vw': 1vw, 'vh': 1vh, 'vmin': 1vmin, 'vmax': 1vmax); - - @if not index(map-keys($units), $unit) { - $_: im-log('Invalid unit `#{$unit}`.'); - } - - @return $value * map-get($units, $unit); -} - -/// -/// This mixin aims at redefining the configuration just for the scope of -/// the call. It is helpful when having a component needing an extended -/// configuration such as custom breakpoints (referred to as tweakpoints) -/// for instance. -/// -/// @author Hugo Giraudel -/// -/// @param {Map} $tweakpoints [()] - Map of tweakpoints to be merged with `$breakpoints` -/// @param {Map} $tweak-media-expressions [()] - Map of tweaked media expressions to be merged with `$media-expression` -/// -/// @example scss - Extend the global breakpoints with a tweakpoint -/// @include media-context(('custom': 678px)) { -/// .foo { -/// @include media('>phone', '<=custom') { -/// // ... -/// } -/// } -/// } -/// -/// @example scss - Extend the global media expressions with a custom one -/// @include media-context($tweak-media-expressions: ('all': 'all')) { -/// .foo { -/// @include media('all', '>phone') { -/// // ... -/// } -/// } -/// } -/// -/// @example scss - Extend both configuration maps -/// @include media-context(('custom': 678px), ('all': 'all')) { -/// .foo { -/// @include media('all', '>phone', '<=custom') { -/// // ... -/// } -/// } -/// } -/// -@mixin media-context($tweakpoints: (), $tweak-media-expressions: ()) { - // Save global configuration - $global-breakpoints: $breakpoints; - $global-media-expressions: $media-expressions; - - // Update global configuration - $breakpoints: map-merge($breakpoints, $tweakpoints) !global; - $media-expressions: map-merge($media-expressions, $tweak-media-expressions) !global; - - @content; - - // Restore global configuration - $breakpoints: $global-breakpoints !global; - $media-expressions: $global-media-expressions !global; -} - -//// -/// include-media public exposed API -/// @author Eduardo Boucas -/// @access public -//// - - -/// -/// Generates a media query based on a list of conditions -/// -/// @param {Arglist} $conditions - Media query conditions -/// -/// @example scss - With a single set breakpoint -/// @include media('>phone') { } -/// -/// @example scss - With two set breakpoints -/// @include media('>phone', '<=tablet') { } -/// -/// @example scss - With custom values -/// @include media('>=358px', '<850px') { } -/// -/// @example scss - With set breakpoints with custom values -/// @include media('>desktop', '<=1350px') { } -/// -/// @example scss - With a static expression -/// @include media('retina2x') { } -/// -/// @example scss - Mixing everything -/// @include media('>=350px', ' 0) { - @media #{unquote(parse-expression(nth($conditions, 1)))} { - // Recursive call - @include media(slice($conditions, 2)...) { - @content; - } - } - } -} diff --git a/src/scss/abstracts/_mixins.scss b/src/scss/abstracts/_mixins.scss deleted file mode 100644 index 8ed406f..0000000 --- a/src/scss/abstracts/_mixins.scss +++ /dev/null @@ -1,112 +0,0 @@ -// Font-size + Line-height + Kerning -// Usage: @include font-size(1, mobile) -// Add more true/false args to control what to output: font-size, line-height, kerning -@mixin font-size($size, $elem, $font-size: true, $line-height: false, $kerning: false, $adjust-font-size: 0) { - @if not map-has-key(map-get($font__scale, $elem), $size) { - @warn "'#{$size}' key does not exist in array!"; - } - @if ( $font-size != false ) { - font-size: get-font-size($size, $elem) + $adjust-font-size; - } - @if ( $line-height == true ) { - line-height: get-line-height($size, $elem); - } - @if ( $kerning == true ) { - letter-spacing: get-kerning($size, $elem); - } -} - -// Font Family -@mixin font-family($elem) { - font-family: unquote(get-font-family($elem)); -} - -// Font Weight -@mixin font-weight($elem) { - font-weight: get-font-weight($elem); -} - -// Anchor aspect -@mixin anchor-aspect($type: 'main') { - @if ($type == 'main') { // Base - color: color(primary, 1); - text-decoration: none; - - &:hover, - &:active { - outline: 0; - text-decoration: underline; - } - } @else if ($type == 'header') { - color: color(typography, 2i); - text-transform: uppercase; - text-decoration: none; - - &:hover, - &:active { - color: color(typography, 1i); - } - } @else if ($type == 'footer') { - color: color(typography, 3); - text-decoration: none; - - &:hover, - &:active { - text-decoration: underline; - } - } -} - -@mixin shadow($layout: false) { - @if ( $layout == 'dark' ) { - box-shadow: 0 20px 48px rgba(darken(color(bg, 1), 35%), .2); - } @else { - box-shadow: 0 20px 48px rgba(color(typography, 1), .16); - } -} - -@mixin shadow-sm($layout: false) { - @if ( $layout == 'dark' ) { - box-shadow: 0 16px 24px rgba(darken(color(bg, 1), 35%), .2); - } @else { - box-shadow: 0 16px 24px rgba(color(typography, 1), .16); - } -} - -@mixin divider-mix($layout: false) { - display: block; - height: 1px; - @if ( $layout == 'dark' ) { - background: color(bg, 3i); - } @else { - background: color(bg, 3); - } -} - -@mixin divider($type: false, $layout: false) { - @if ( $type == 'before' ) { - position: relative; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - @include divider-mix($layout); - } - } @else if ($type == 'after') { - position: relative; - - &::after { - content: ''; - position: absolute; - bottom: 0; - left: 0; - width: 100%; - @include divider-mix($layout); - } - } @else { - @include divider-mix($layout); - } -} diff --git a/src/scss/abstracts/_variables.scss b/src/scss/abstracts/_variables.scss deleted file mode 100644 index 6d4b34f..0000000 --- a/src/scss/abstracts/_variables.scss +++ /dev/null @@ -1,92 +0,0 @@ -// -------------------------------------------- -// Colors ------------------------------------- -// Usage example: color(primary, main) -// -------------------------------------------- -$color: ( - typography: ( - 1: #161E2A, - 2: #252E3B, - 3: #6B7A90, - 4: #9EABC0, - 1i: #FFF, - 2i: rgba( #FFF, .8 ) - ), - bg: ( - 1: #FFFFFF, - 2: #F3F5F8, - 3: #E4E8EE - ), - primary: ( - 1: #7E6EE6, - 2: #A59AEE, - 3: #5743DF, - 4: #E5E1FF - ), - secondary: ( - 1: #5AE0D2, - 2: #85E8DE, - 3: #2FD8C6, - 4: #BDFDF6 - ) -); - -// -------------------------------------------- -// Typography --------------------------------- -// -------------------------------------------- -$font__family: ( - base: '"Heebo", sans-serif', // font-family(base) - heading: '"PLayfair Display", sans-serif', // font-family(heading) - code: 'Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace', // font-family(code) - pre: '"Courier 10 Pitch", Courier, monospace' // font-family(pre) -); - -$font__sizes: ( - alpha: ( 44px, 54px, 0px ), // font-size, line-height, kerning (use '0' if don't want to output any kerning) - beta: ( 34px, 44px, 0px ), - gamma: ( 30px, 40px, 0px ), - delta: ( 24px, 34px, 0px ), - epsilon: ( 20px, 30px, -0.1px ), - zeta: ( 18px, 28px, -0.1px ), - eta: ( 16px, 24px, -0.1px ), - theta: ( 14px, 20px, 0px ) -); - -$font__scale: ( - desktop: ( // i.e. $breakpoint__m + $breakpoint__l (600 - 1024) - 1: map-get($font__sizes, alpha), // H1 - 2: map-get($font__sizes, beta), // H2 - 3: map-get($font__sizes, gamma), // H3 - 4: map-get($font__sizes, delta), // H4 - 5: map-get($font__sizes, epsilon), // Body, H5, H6 - 6: map-get($font__sizes, zeta), // Text small - 7: map-get($font__sizes, eta), // Text smaller - 8: map-get($font__sizes, theta) // Footer area - ), - mobile: ( // i.e. $breakpoint__xs + $breakpoint__s (up to 600) - 1: map-get($font__sizes, beta), // H1 - 2: map-get($font__sizes, gamma), // H2 - 3: map-get($font__sizes, delta), // H3 - 4: map-get($font__sizes, delta), // H4 - 5: map-get($font__sizes, epsilon), // Body, H5, H6 - 6: map-get($font__sizes, zeta), // Text small - 7: map-get($font__sizes, eta), // Text smaller - 8: map-get($font__sizes, theta) // Footer area - ) -); - -$font__weight: ( - regular: 400, // font__weight(regular) - medium: 500, // font__weight(medium) - semibold: 600, // font__weight(semibold) - bold: 700 // font__weight(bold) -); - -// -------------------------------------------- -// Structure ---------------------------------- -// -------------------------------------------- -$content__padding: ( - mobile: 16px, - desktop: 24px -); -$container__width: 1080px; -$container__width-sm: 800px; diff --git a/src/scss/added.css b/src/scss/added.css deleted file mode 100644 index ffb5ebe..0000000 --- a/src/scss/added.css +++ /dev/null @@ -1,42 +0,0 @@ -.logo-header { - height: 60px; - width: 60px; -} - -.chartsContainer { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - flex-wrap: wrap; - - max-width: 700px; - - margin: 2em; -} - -.chart { - max-width: 500px; - max-height: 400px; - margin: 1em; -} - -.margin-top { - margin-top: 3em; -} - - -.how-it-works-container { - padding: 60px; - background-color: #161E2A; - color: white; -} - -.how-it-works-title { - color: white; -} - -.testimonial-position { - margin-left: 10px; - font-size: 13px; -} \ No newline at end of file diff --git a/src/scss/base/_base.scss b/src/scss/base/_base.scss deleted file mode 100644 index 9a4da5c..0000000 --- a/src/scss/base/_base.scss +++ /dev/null @@ -1,103 +0,0 @@ -html { - box-sizing: border-box; -} - -*, -*:before, -*:after { /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ - box-sizing: inherit; -} - -body { - background: color(bg, 1); /* Fallback for when there is no custom background color defined. */ - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; -} - -hr { - border: 0; - @include divider(); - margin-top: 24px; - margin-bottom: 24px; -} - -ul, ol { - margin-top: 0; - margin-bottom: 24px; - padding-left: 24px; -} - -ul { - list-style: disc; -} - -ol { - list-style: decimal; -} - -li > ul, -li > ol { - margin-bottom: 0; -} - -dl { - margin-top: 0; - margin-bottom: 24px; -} - -dt { - @include font-weight(semibold); -} - -dd { - margin-left: 24px; - margin-bottom: 24px; -} - -img { - height: auto; /* Make sure images are scaled correctly. */ - max-width: 100%; /* Adhere to container width. */ - vertical-align: middle; -} - -figure { - margin: 24px 0; /* Extra wide images within figure tags don't overflow the content area. */ -} - -figcaption { - @include font-size(7, mobile, true, true); - padding: 8px 0; -} - -img, -svg { - display: block; -} - -// tables -table { - border-collapse: collapse; - margin-bottom: 24px; - width: 100%; -} - -tr { - border-bottom: 1px solid color(bg, 3); -} - -th { - text-align: left; -} - -th, -td { - padding: 10px 16px; - - &:first-child { - padding-left: 0; - } - - &:last-child { - padding-right: 0; - } -} diff --git a/src/scss/base/_helpers.scss b/src/scss/base/_helpers.scss deleted file mode 100644 index bfb7ab8..0000000 --- a/src/scss/base/_helpers.scss +++ /dev/null @@ -1,469 +0,0 @@ -.container, -.container-sm { - width: 100%; - margin: 0 auto; - padding-left: get-content-padding(mobile); - padding-right: get-content-padding(mobile); - - @include media( '>small' ) { - padding-left: get-content-padding(desktop); - padding-right: get-content-padding(desktop); - } -} - -.container { - max-width: $container__width + ( get-content-padding(desktop) * 2 ); -} - -.container-sm { - max-width: $container__width-sm + ( get-content-padding(desktop) * 2 ); -} - -.container { - - .container-sm { - max-width: $container__width-sm; - padding-left: 0; - padding-right: 0; - } -} - -/* Text meant only for screen readers. */ -.screen-reader-text { - clip: rect(1px, 1px, 1px, 1px); - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; - word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */ - - &:focus { - border-radius: 2px; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); - clip: auto !important; - display: block; - @include font-size(8, mobile, true, false, true); - @if ( get-font-size(8, desktop) != get-font-size(8, mobile) ) { - @include media( '>medium' ) { - @include font-size(8, desktop, true, false, true); - } - } - @include font-weight(semibold); - line-height: 16px; - text-decoration: none; - text-transform: uppercase; - background-color: color(bg, 1); - color: color(primary, 1) !important; - border: none; - height: auto; - left: 8px; - padding: 16px 40px; - top: 8px; - width: auto; - z-index: 100000; - } -} - -.list-reset { - list-style: none; - padding: 0; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.text-right { - text-align: right; -} - -.text-primary { - color: color(primary, 1); -} - -.text-secondary { - color: color(secondary, 1); -} - -.has-top-divider { - @include divider(before); -} - -.has-bottom-divider { - @include divider(after); -} - -.m-0 { - margin: 0; -} - -.mt-0 { - margin-top: 0; -} - -.mr-0 { - margin-right: 0; -} - -.mb-0 { - margin-bottom: 0; -} - -.ml-0 { - margin-left: 0; -} - -.m-8 { - margin: 8px; -} - -.mt-8 { - margin-top: 8px; -} - -.mr-8 { - margin-right: 8px; -} - -.mb-8 { - margin-bottom: 8px; -} - -.ml-8 { - margin-left: 8px; -} - -.m-16 { - margin: 16px; -} - -.mt-16 { - margin-top: 16px; -} - -.mr-16 { - margin-right: 16px; -} - -.mb-16 { - margin-bottom: 16px; -} - -.ml-16 { - margin-left: 16px; -} - -.m-24 { - margin: 24px; -} - -.mt-24 { - margin-top: 24px; -} - -.mr-24 { - margin-right: 24px; -} - -.mb-24 { - margin-bottom: 24px; -} - -.ml-24 { - margin-left: 24px; -} - -.m-32 { - margin: 32px; -} - -.mt-32 { - margin-top: 32px; -} - -.mr-32 { - margin-right: 32px; -} - -.mb-32 { - margin-bottom: 32px; -} - -.ml-32 { - margin-left: 32px; -} - -.m-40 { - margin: 40px; -} - -.mt-40 { - margin-top: 40px; -} - -.mr-40 { - margin-right: 40px; -} - -.mb-40 { - margin-bottom: 40px; -} - -.ml-40 { - margin-left: 40px; -} - -.m-48 { - margin: 48px; -} - -.mt-48 { - margin-top: 48px; -} - -.mr-48 { - margin-right: 48px; -} - -.mb-48 { - margin-bottom: 48px; -} - -.ml-48 { - margin-left: 48px; -} - -.m-56 { - margin: 56px; -} - -.mt-56 { - margin-top: 56px; -} - -.mr-56 { - margin-right: 56px; -} - -.mb-56 { - margin-bottom: 56px; -} - -.ml-56 { - margin-left: 56px; -} - -.m-64 { - margin: 64px; -} - -.mt-64 { - margin-top: 64px; -} - -.mr-64 { - margin-right: 64px; -} - -.mb-64 { - margin-bottom: 64px; -} - -.ml-64 { - margin-left: 64px; -} - -.p-0 { - padding: 0; -} - -.pt-0 { - padding-top: 0; -} - -.pr-0 { - padding-right: 0; -} - -.pb-0 { - padding-bottom: 0; -} - -.pl-0 { - padding-left: 0; -} - -.p-8 { - padding: 8px; -} - -.pt-8 { - padding-top: 8px; -} - -.pr-8 { - padding-right: 8px; -} - -.pb-8 { - padding-bottom: 8px; -} - -.pl-8 { - padding-left: 8px; -} - -.p-16 { - padding: 16px; -} - -.pt-16 { - padding-top: 16px; -} - -.pr-16 { - padding-right: 16px; -} - -.pb-16 { - padding-bottom: 16px; -} - -.pl-16 { - padding-left: 16px; -} - -.p-24 { - padding: 24px; -} - -.pt-24 { - padding-top: 24px; -} - -.pr-24 { - padding-right: 24px; -} - -.pb-24 { - padding-bottom: 24px; -} - -.pl-24 { - padding-left: 24px; -} - -.p-32 { - padding: 32px; -} - -.pt-32 { - padding-top: 32px; -} - -.pr-32 { - padding-right: 32px; -} - -.pb-32 { - padding-bottom: 32px; -} - -.pl-32 { - padding-left: 32px; -} - -.p-40 { - padding: 40px; -} - -.pt-40 { - padding-top: 40px; -} - -.pr-40 { - padding-right: 40px; -} - -.pb-40 { - padding-bottom: 40px; -} - -.pl-40 { - padding-left: 40px; -} - -.p-48 { - padding: 48px; -} - -.pt-48 { - padding-top: 48px; -} - -.pr-48 { - padding-right: 48px; -} - -.pb-48 { - padding-bottom: 48px; -} - -.pl-48 { - padding-left: 48px; -} - -.p-56 { - padding: 56px; -} - -.pt-56 { - padding-top: 56px; -} - -.pr-56 { - padding-right: 56px; -} - -.pb-56 { - padding-bottom: 56px; -} - -.pl-56 { - padding-left: 56px; -} - -.p-64 { - padding: 64px; -} - -.pt-64 { - padding-top: 64px; -} - -.pr-64 { - padding-right: 64px; -} - -.pb-64 { - padding-bottom: 64px; -} - -.pl-64 { - padding-left: 64px; -} - -/* Reveal animations */ -.sr { - - .has-animations { - - .is-revealing { - visibility: hidden; - } - } -} diff --git a/src/scss/base/_typography.scss b/src/scss/base/_typography.scss deleted file mode 100644 index 75e515e..0000000 --- a/src/scss/base/_typography.scss +++ /dev/null @@ -1,252 +0,0 @@ -html { - @include font-size(5, mobile, true, true); - @if ( get-font-size(5, desktop) != get-font-size(5, mobile) ) { - @include media( '>medium' ) { - @include font-size(5, desktop, true, true, true); - } - } -} - -body { - color: color(typography, 3); - font-size: 1rem; -} - -body, -button, -input, -select, -textarea { - @include font-family(base); -} - -a { - @include anchor-aspect(main); -} - -h1, h2, h3, h4, h5, h6, -.h1, .h2, .h3, .h4, .h5, .h6 { - clear: both; - color: color(typography, 1); - @if ( get-font-family(heading) != get-font-family(base) ) { - @include font-family(heading); - } - @include font-weight(semibold); -} - -h1, -.h1 { - @include font-size(1, mobile, true, true, true); - @if ( get-font-size(1, desktop) != get-font-size(1, mobile) ) { - @include media( '>medium' ) { - @include font-size(1, desktop, true, true, true); - } - } -} - -h2, -.h2 { - @include font-size(2, mobile, true, true, true); - @if ( get-font-size(2, desktop) != get-font-size(2, mobile) ) { - @include media( '>medium' ) { - @include font-size(2, desktop, true, true, true); - } - } -} - -h3, -.h3, -blockquote { - @include font-size(3, mobile, true, true, true); - @if ( get-font-size(3, desktop) != get-font-size(3, mobile) ) { - @include media( '>medium' ) { - @include font-size(3, desktop, true, true, true); - } - } -} - -h4, -h5, -h6, -.h4, -.h5, -.h6 { - @include font-size(4, mobile, true, true, true); - @if ( get-font-size(4, desktop) != get-font-size(4, mobile) ) { - @include media( '>medium' ) { - @include font-size(4, desktop, true, true, true); - } - } -} - -@include media( '<=medium' ) { - - .h1-mobile { - @include font-size(1, mobile, true, true, true); - } - - .h2-mobile { - @include font-size(2, mobile, true, true, true); - } - - .h3-mobile { - @include font-size(3, mobile, true, true, true); - } - - .h4-mobile, - .h5-mobile, - .h6-mobile { - @include font-size(4, mobile, true, true, true); - } -} - -.text-light { - color: color(typography, 3); - - a { - color: color(typography, 3); - } -} - -.text-light { - - h1, h2, h3, h4, h5, h6, - .h1, .h2, .h3, .h4, .h5, .h6 { - color: color(typography, 1i) !important; - } -} - -.text-sm { - @include font-size(6, mobile, true, true, true); - @if ( get-font-size(6, desktop) != get-font-size(6, mobile) ) { - @include media( '>medium' ) { - @include font-size(6, desktop, true, true, true); - } - } -} - -.text-xs { - @include font-size(7, mobile, true, true, true); - @if ( get-font-size(7, desktop) != get-font-size(7, mobile) ) { - @include media( '>medium' ) { - @include font-size(7, desktop, true, true, true); - } - } -} - -h1, h2, -.h1, .h2 { - margin-top: 48px; - margin-bottom: 16px; -} - -h3, -.h3 { - margin-top: 36px; - margin-bottom: 12px; -} - -h4, h5, h6, -.h4, .h5, .h6 { - margin-top: 24px; - margin-bottom: 4px; -} - -p { - margin-top: 0; - margin-bottom: 24px; -} - -dfn, cite, em, i { - font-style: italic; -} - -blockquote { - color: color(typography, 2); - font-style: italic; - margin-top: 24px; - margin-bottom: 24px; - margin-left: 24px; - - &::before { - content: "\201C"; - } - - &::after { - content: "\201D"; - } - - p { - display: inline; - } -} - -address { - color: color(typography, 2); - border-width: 1px 0; - border-style: solid; - border-color: color(bg, 3); - padding: 24px 0; - margin: 0 0 24px; -} - -pre, -pre h1, -pre h2, -pre h3, -pre h4, -pre h5, -pre h6, -pre .h1, -pre .h2, -pre .h3, -pre .h4, -pre .h5, -pre .h6 { - @include font-family(pre); -} - -pre, code, kbd, tt, var { - background: color(bg, 2); -} - -pre { - @include font-size(7, mobile, true, true); - margin-bottom: 1.6em; - max-width: 100%; - overflow: auto; - padding: 24px; - margin-top: 24px; - margin-bottom: 24px; -} - -code, kbd, tt, var { - @include font-family(code); - @include font-size(7, mobile, true); - padding: 2px 4px; -} - -abbr, acronym { - cursor: help; -} - -mark, ins { - text-decoration: none; -} - -small { - @include font-size(6, mobile, true, true, true); -} - -b, -strong { - @include font-weight(semibold); -} - -button, -input, -select, -textarea, -label { - @include font-size(5, mobile, true, true); -} diff --git a/src/scss/components/_buttons.scss b/src/scss/components/_buttons.scss deleted file mode 100644 index 180f084..0000000 --- a/src/scss/components/_buttons.scss +++ /dev/null @@ -1,171 +0,0 @@ -.button { - display: inline-flex; - @include font-size(8, mobile, true, false, true); - @if ( get-font-size(8, desktop) != get-font-size(8, mobile) ) { - @include media( '>medium' ) { - @include font-size(8, desktop, true, false, true); - } - } - @include font-weight(bold); - line-height: 16px; - text-decoration: none !important; - text-transform: uppercase; - background-color: color(bg, 1); - background: color(bg, 1); - color: color(primary, 1) !important; - border: none; - border-radius: 2px; - cursor: pointer; - justify-content: center; - padding: 16px 40px; - height: 48px; - text-align: center; - white-space: nowrap; - - &:active { - outline: 0; - } - - &::before { - border-radius: 2px; - } -} - -.button-shadow { - position: relative; - - &::before { - content: ''; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - box-shadow: 0 8px 16px rgba(color(typography, 1), .12); - mix-blend-mode: multiply; - transition: box-shadow .15s ease; - } - - &:hover { - - &::before { - box-shadow: 0 8px 16px rgba(color(typography, 1), .16); - } - } -} - -.button-sm { - padding: 8px 24px; - height: 32px; - - &.button-shadow { - - &::before { - box-shadow: 0 4px 16px rgba(color(typography, 1), .12); - } - - &:hover { - - &::before { - box-shadow: 0 4px 16px rgba(color(typography, 1), .16); - } - } - } -} - -.button-primary, -.button-secondary { - color: color(typography, 1i) !important; - transition: background .15s ease; -} - -.button-primary { - background: color(primary, 1); - - &:hover { - background: lighten(color(primary, 1), 2%); - } - - &.button-shadow { - - &::before { - box-shadow: 0 8px 16px rgba(color(primary, 1), .24); - } - - &:hover { - - &::before { - box-shadow: 0 8px 16px rgba(color(primary, 1), .32); - } - } - } - - .button-sm { - - &.button-shadow { - - &::before { - box-shadow: 0 4px 16px rgba(color(primary, 1), .24); - } - - &:hover { - - &::before { - box-shadow: 0 4px 16px rgba(color(primary, 1), .32); - } - } - } - } -} - -.button-secondary { - background: color(secondary, 1); - - &:hover { - background: lighten(color(secondary, 1), 3%); - } - - &.button-shadow { - - &::before { - box-shadow: 0 8px 16px rgba(color(secondary, 1), .24); - } - - &:hover { - - &::before { - box-shadow: 0 8px 16px rgba(color(secondary, 1), .32); - } - } - } - - .button-sm { - - &.button-shadow { - - &::before { - box-shadow: 0 4px 16px rgba(color(secondary, 1), .24); - } - - &:hover { - - &::before { - box-shadow: 0 4px 16px rgba(color(secondary, 1), .32); - } - } - } - } -} - -.button-block { - display: flex; - width: 100%; -} - -@include media( '<=medium' ) { - - .button-wide-mobile { - width: 100%; - max-width: 280px; - } -} diff --git a/src/scss/layout/_cta.scss b/src/scss/layout/_cta.scss deleted file mode 100644 index 96ba8f5..0000000 --- a/src/scss/layout/_cta.scss +++ /dev/null @@ -1,70 +0,0 @@ -.cta { - position: relative; - text-align: center; - - .section-inner { - padding: 32px; - } - - .section-title { - margin-bottom: 48px; - color: color(primary, 4) !important; - } - - &::before { - content: ''; - width: 100%; - height: 50%; - position: absolute; - left: 0; - bottom: 0; - background: color(typography, 1); - } -} - -.cta-inner { - position: relative; - background: color(primary, 1); - overflow: hidden; - - &::before { - content: ''; - position: absolute; - right: 58px; - bottom: calc(50% - 155px); - width: 155px; - height: 150px; - background-image: url('../images/cta-illustration.svg'); - background-repeat: no-repeat; - } - - > * { - position: relative; /* To display elements above hero illustrations */ - } -} - -@include media( '>medium') { - - .cta { - text-align: left; - - .section-inner { - padding: 64px 32px; - } - - .section-title { - margin-bottom: 0; - padding-right: 24px; - } - } - - .cta-inner { - display: flex; - align-items: center; - justify-content: space-between; - - &::before { - bottom: calc(50% - 42px); - } - } -} diff --git a/src/scss/layout/_features-extended.scss b/src/scss/layout/_features-extended.scss deleted file mode 100644 index 5354433..0000000 --- a/src/scss/layout/_features-extended.scss +++ /dev/null @@ -1,139 +0,0 @@ -.features-extended-header { - margin-bottom: 32px; -} - -.features-extended-wrap { - display: flex; - flex-wrap: wrap; - margin-top: -16px; - - &:last-of-type { - margin-bottom: -16px; - } - - &:not(:last-of-type) { - margin-bottom: 16px; - } -} - -.feature-extended { - padding: 16px 0; -} - -.feature-extended-image { - margin-bottom: 24px; - - img, - svg { - width: 100%; - max-width: 360px; - height: auto; - margin-left: auto; - margin-right: auto; - overflow: visible; - @include shadow; - } -} - -.feature-extended-body { - text-align: center; -} - -@include media( '>medium' ) { - - .features-extended { - - .container { - /* image width (360) + padding (48) + text width (360) = 828 */ - max-width: 828px + ( get-content-padding(desktop) * 2 ); - } - - .section-inner { - padding-bottom: 102px; - } - - .section-paragraph { - padding-left: 72px; - padding-right: 72px; - margin-bottom: 0; - } - } - - .features-extended-header { - margin-bottom: 80px; - } - - .features-extended-wrap { - margin-top: -40px; - - &:last-of-type { - margin-bottom: -40px; - } - - &:not(:last-of-type) { - margin-bottom: 40px; - } - } - - .feature-extended { - display: flex; - flex-wrap: nowrap; - align-items: stretch; - justify-content: flex-end; - padding: 40px 0; - - .feature-extended-image { - margin-right: 48px; - margin-bottom: 0; - - img, - svg { - width: auto; - max-width: 460px; - margin-left: 0; - } - } - - &:nth-child(odd) { - justify-content: flex-start; - - .feature-extended-image { - order: 1; - margin-left: 48px; - margin-right: 0; - - img, - svg { - margin-left: auto; - margin-right: 0; - } - } - } - } - - .feature-extended-body { - /* Align vertically */ - display: flex; - flex-direction: column; - justify-content: center; - /* Align vertically, end */ - flex-shrink: 0; - width: 360px; - text-align: left; - } -} - -@include media( '>large' ) { - - .features-extended { - - .container { - /* image width (420) + padding (48) + text width (480) = 828 */ - max-width: 948px + ( get-content-padding(desktop) * 2 ); - } - } - - .feature-extended-body { - width: 480px; - } -} diff --git a/src/scss/layout/_features.scss b/src/scss/layout/_features.scss deleted file mode 100644 index dfe2c72..0000000 --- a/src/scss/layout/_features.scss +++ /dev/null @@ -1,101 +0,0 @@ -.features { - - .section-title { - position: relative; - margin-bottom: 32px; - max-width: 620px; - margin-left: auto; - margin-right: auto; - z-index: 0; - - &::before { - content: ''; - position: absolute; - top: -20px; - left: 0; - width: 76px; - height: 85px; - background-image: url('../images/features-quote-illustration.svg'); - background-size: 100% 100%; - background-repeat: no-repeat; - z-index: -1 - } - } -} - -.features-illustration { - margin-bottom: 32px; -} - -.features-wrap { - display: flex; - flex-wrap: wrap; - justify-content: center; - margin-right: -12px; - margin-left: -12px; - margin-top: -16px; - - &:last-of-type { - margin-bottom: -16px; - } - - &:not(:last-of-type) { - margin-bottom: 16px; - } -} - -.feature { - padding: 16px 12px; - width: 364px; - max-width: 364px; - flex-grow: 1; -} - -.feature-inner { - height: 100%; -} - -.feature-icon { - display: flex; - justify-content: center; -} - -@include media( '>medium' ) { - - .features { - - .section-title { - margin-bottom: 64px; - - &::before { - top: -45px; - width: 87px; - height: 112px; - } - } - } - - .features-illustration { - margin-bottom: 64px; - } - - .features-wrap { - margin-right: -24px; - margin-left: -24px; - margin-top: -32px; - - &:last-of-type { - margin-bottom: -32px; - } - - &:not(:last-of-type) { - margin-bottom: 32px; - } - } - - .feature { - padding: 32px 24px; - width: 388px; - max-width: 388px; - } -} diff --git a/src/scss/layout/_footer.scss b/src/scss/layout/_footer.scss deleted file mode 100644 index 7937a65..0000000 --- a/src/scss/layout/_footer.scss +++ /dev/null @@ -1,137 +0,0 @@ -.site-footer { - @include font-size(8, mobile, true, true, true); - @if ( get-font-size(8, desktop) != get-font-size(8, mobile) ) { - @include media( '>medium' ) { - @include font-size(8, desktop, true, true, true); - } - } - background: color(typography, 1); - //color: color(typography, 2); - - a { - @include anchor-aspect(footer); - } -} - -.site-footer-inner { - padding-top: 48px; - padding-bottom: 32px; -} - -.footer-brand, -.footer-social-links, -.footer-bottom-links, -.footer-copyright { - display: flex; - justify-content: center; -} - -.footer-social-links, -.footer-bottom-links { - - li { - - + li { - margin-left: 16px; - } - } -} - -.footer-social-links { - margin-left: -8px; - - li { - display: inline-flex; - - a { - padding: 8px; - } - } -} - -.site-footer-unit-inner { - padding-top: 32px; - border-top: 2px solid color(typography, 2); -} - -.footer-title { - color: color(typography, 1i); - @include font-weight(bold) - text-transform: uppercase; -} - -.footer-top-links { - - ul { - margin-bottom: 32px; - } - - li { - margin-bottom: 12px; - } - - a { - color: color(typography, 4); - } -} - -.site-footer-bottom { - margin-top: 48px; -} - -@include media( '<=medium' ) { - - .site-footer-unit:first-of-type { - - .site-footer-unit-inner { - padding-top: 0; - border-top: none; - } - } -} - -@include media( '>medium' ) { - - .site-footer-inner { - padding-top: 56px; - } - - .site-footer-top { - display: flex; - flex-wrap: wrap; - margin-right: -12px; - margin-left: -12px; - margin-top: -12px; - - &:last-of-type { - margin-bottom: -12px; - } - - &:not(:last-of-type) { - margin-bottom: 12px; - } - } - - .site-footer-unit { - padding: 12px; - flex-basis: 276px; - flex-grow: 1; - } - - .footer-brand, - .footer-social-links { - justify-content: flex-start; - } - - .site-footer-bottom { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - margin-top: 20px; - } - - .footer-bottom-links { - margin-bottom: 0; - order: 1; - } -} diff --git a/src/scss/layout/_header.scss b/src/scss/layout/_header.scss deleted file mode 100644 index 6667f3e..0000000 --- a/src/scss/layout/_header.scss +++ /dev/null @@ -1,36 +0,0 @@ -.site-header { - padding: 24px 0; - position: absolute; - top: 0; - left: 0; - width: 100%; - z-index: 1; -} - -.site-header-inner { - position: relative; /* To display all elements above the background color */ - display: flex; - justify-content: space-between; - align-items: center; -} - -.header-links { - display: inline-flex; - - li { - display: inline-flex; - } - - a:not(.button) { - @include font-size(7, mobile, true, true, true); - @if ( get-font-size(7, desktop) != get-font-size(7, mobile) ) { - @include media( '>medium' ) { - @include font-size(7, desktop, true, true, true); - } - } - @include font-weight(semibold); - @include anchor-aspect(header); - line-height: 16px; - padding: 8px 24px; - } -} diff --git a/src/scss/layout/_hero.scss b/src/scss/layout/_hero.scss deleted file mode 100644 index 759ac57..0000000 --- a/src/scss/layout/_hero.scss +++ /dev/null @@ -1,127 +0,0 @@ -.hero { - position: relative; - padding-top: 128px; - padding-bottom: 80px; - z-index: 0; - - &::before { - content: ''; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - background: color(typography, 1); - z-index: -2; - } - - &::after { - content: ''; - position: absolute; - top: 0; - left: calc(50% - 320px); - width: 640px; - height: 136px; - background-image: url('../images/hero-illustration.svg'); - background-size: 640px 136px; - background-repeat: no-repeat; - z-index: -1; - } -} - -.hero-copy { - position: relative; /* To display elements above hero illustrations */ -} - -@include media( '>medium' ) { - - .hero { - padding-top: 160px; - padding-bottom: 128px; - - &::after { - left: calc(50% - 720px); - width: 1440px; - height: 307px; - background-size: 1440px 307px; - } - } - - .hero-paragraph { - padding-left: 72px; - padding-right: 72px; - } -} - -.has-animations { - - .hero::before, - .hero::after, - .site-header, - .hero-title, - .hero-paragraph, - .hero-cta { - opacity: 0; - } - - &.is-loaded { - - .hero { - - &::before { - animation: heroBg .6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards; - } - - &::after { - animation: heroFadeIn .6s ease forwards .3s; - } - } - - .site-header { - animation: heroFadeIn .6s ease forwards .3s; - } - - .hero-title { - animation: heroContent .6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards .15s; - } - - .hero-paragraph { - animation: heroContent .6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards .3s; - } - - .hero-cta { - animation: heroContent .6s cubic-bezier(0.215, 0.61, 0.355, 1) forwards .45s; - } - } -} - -@keyframes heroBg { - from { - transform: translateY(-100%); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } -} - -@keyframes heroContent { - from { - transform: translateY(-40px); - opacity: 0; - } - to { - transform: translateY(0); - opacity: 1; - } -} - -@keyframes heroFadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} diff --git a/src/scss/layout/_main.scss b/src/scss/layout/_main.scss deleted file mode 100644 index d7b68ea..0000000 --- a/src/scss/layout/_main.scss +++ /dev/null @@ -1,36 +0,0 @@ -.is-boxed { - background: color(bg, 1); -} - -.body-wrap { - background: color(bg, 1); - overflow: hidden; - /* Sticky footer */ - display: flex; - flex-direction: column; - min-height: 100vh; -} - -.boxed-container { - max-width: 1440px; - margin: 0 auto; - @include shadow; -} - -main { - flex: 1 0 auto; -} - -.section-inner { - position: relative; /* To always display inner elements above pseudo decorative stuff */ - padding-top: 48px; - padding-bottom: 48px; -} - -@include media( '>medium' ) { - - .section-inner { - padding-top: 80px; - padding-bottom: 80px; - } -} diff --git a/src/scss/layout/_pricing.scss b/src/scss/layout/_pricing.scss deleted file mode 100644 index bf4141b..0000000 --- a/src/scss/layout/_pricing.scss +++ /dev/null @@ -1,102 +0,0 @@ -.pricing { - background: color(typography, 1); - color: color(typography, 4); - - .section-title { - margin-bottom: 48px; - } -} - -.pricing-tables-wrap { - display: flex; - flex-wrap: wrap; - justify-content: center; - margin-right: -12px; - margin-left: -12px; - margin-top: -12px; - - &:last-of-type { - margin-bottom: -12px; - } - - &:not(:last-of-type) { - margin-bottom: 12px; - } -} - -.pricing-table { - padding: 12px; - width: 368px; - max-width: 368px; - flex-grow: 1; -} - -.pricing-table-inner { - position: relative; - display: flex; - flex-wrap: wrap; - background: color(typography, 2); - padding: 24px; - height: 100%; - - > * { - width: 100%; - } -} - -.pricing-table-header { - border-bottom: 1px dashed color(typography, 3); -} - -.pricing-table-price { - @if ( get-font-family(heading) != get-font-family(base) ) { - @include font-family(heading); - } - color: color(bg, 1); -} - -.pricing-table-price-currency { - @include font-size(3, mobile, true, true, true); - @if ( get-font-size(3, desktop) != get-font-size(3, mobile) ) { - @include media( '>medium' ) { - @include font-size(3, desktop, true, true, true); - } - } -} - -.pricing-table-features-title { - color: color(typography, 1i); -} - -.pricing-table-features { - margin-bottom: 64px; - - li { - display: flex; - align-items: center; - margin-bottom: 12px; - - &::before { - content: ''; - width: 16px; - height: 13px; - margin-right: 12px; - background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICA8cGF0aCBkPSJNNS42IDhMMi40IDQuOCAwIDcuMmw1LjYgNS42TDE2IDIuNCAxMy42IDB6IiBmaWxsPSIjNUFFMEQyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=); - background-repeat: no-repeat; - } - } -} - -.pricing-table-cta { - align-self: flex-end; -} - -@include media( '>medium' ) { - - .pricing { - - .section-title { - margin-bottom: 80px; - } - } -} diff --git a/src/scss/layout/_testimonials.scss b/src/scss/layout/_testimonials.scss deleted file mode 100644 index 2a69627..0000000 --- a/src/scss/layout/_testimonials.scss +++ /dev/null @@ -1,74 +0,0 @@ -.testimonials { - - .section-title { - margin-bottom: 48px; - } -} - -.testimonials-wrap { - display: flex; - flex-wrap: wrap; - justify-content: center; - margin-right: -12px; - margin-left: -12px; - margin-top: -12px; - - &:last-of-type { - margin-bottom: -12px; - } - - &:not(:last-of-type) { - margin-bottom: 12px; - } -} - -.testimonial { - padding: 12px; - width: 368px; - max-width: 368px; - flex-grow: 1; -} - -.testimonial-inner { - position: relative; - display: flex; - flex-wrap: wrap; - background: color(bg, 1); - padding: 32px 24px; - height: 100%; - @include shadow; - - > * { - width: 100%; - } -} - -.testimonial-footer { - display: flex; - flex-wrap: wrap; - align-items: center; -} - -.testimonial-image { - width: 40px; - height: 40px; - margin-right: 12px; - - img { - border-radius: 20px; - } -} - -.testimonial-name { - color: color(typography, 1); -} - -@include media( '>medium' ) { - - .testimonials { - - .section-title { - margin-bottom: 80px; - } - } -} diff --git a/src/scss/style.scss b/src/scss/style.scss deleted file mode 100644 index ce51900..0000000 --- a/src/scss/style.scss +++ /dev/null @@ -1,79 +0,0 @@ -/*-------------------------------------------------------------- -# Variables, functions and mixins ---------------------------------------------------------------*/ -@import "abstracts/variables", - "abstracts/functions", - "abstracts/mixins", - 'abstracts/include-media'; - -/*-------------------------------------------------------------- -1.0 Normalize - * normalize.css v7.0.0 | MIT License - * github.com/necolas/normalize.css ---------------------------------------------------------------*/ -@import "normalize"; - -/*-------------------------------------------------------------- -# Base ---------------------------------------------------------------*/ -@import "base/base"; - -/*-------------------------------------------------------------- -# Typography ---------------------------------------------------------------*/ -@import "base/typography"; - -/*-------------------------------------------------------------- -# Helpers ---------------------------------------------------------------*/ -@import "base/helpers"; - -/*-------------------------------------------------------------- -# Buttons ---------------------------------------------------------------*/ -@import "components/buttons"; - -/*-------------------------------------------------------------- -# Header ---------------------------------------------------------------*/ -@import "layout/header"; - -/*-------------------------------------------------------------- -# Hero ---------------------------------------------------------------*/ -@import "layout/hero"; - -/*-------------------------------------------------------------- -# Features ---------------------------------------------------------------*/ -@import "layout/features"; - -/*-------------------------------------------------------------- -# Features extended ---------------------------------------------------------------*/ -@import "layout/features-extended"; - -/*-------------------------------------------------------------- -# Pricing ---------------------------------------------------------------*/ -@import "layout/pricing"; - -/*-------------------------------------------------------------- -# Testimonials ---------------------------------------------------------------*/ -@import "layout/testimonials"; - -/*-------------------------------------------------------------- -# CTA ---------------------------------------------------------------*/ -@import "layout/cta"; - -/*-------------------------------------------------------------- -# Site content ---------------------------------------------------------------*/ -@import "layout/main"; - -/*-------------------------------------------------------------- -# Footer ---------------------------------------------------------------*/ -@import "layout/footer";