commit f997cccb895f8fa3144befe68e7131f9ab89bafe Author: poolitzer Date: Wed Jan 3 12:02:46 2024 +0100 first commit diff --git a/LICENSE-CODE.txt b/LICENSE-CODE.txt new file mode 100644 index 0000000..3ea458e --- /dev/null +++ b/LICENSE-CODE.txt @@ -0,0 +1,19 @@ +Copyright 2024 NewPipe e. V. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE-CONTENT.txt b/LICENSE-CONTENT.txt new file mode 100644 index 0000000..b440210 --- /dev/null +++ b/LICENSE-CONTENT.txt @@ -0,0 +1,429 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + + diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..065ad96 --- /dev/null +++ b/README.txt @@ -0,0 +1,23 @@ +Halcyonic by HTML5 UP +html5up.net | @ajlkn +Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) + + +A somewhat unusual but interesting responsive site template. I did this one to test out a +new pattern set I put together and I think it really came together well. As for use cases +it's kind of unspecific so hey, use it for whatever. + +Feedback, bug reports, and comments are not only welcome, but strongly encouraged :) + +AJ +aj@lkn.io | @ajlkn + + +Credits: + + Demo Images: + Unsplash (unsplash.com) + + Other: + jQuery (jquery.com) + Responsive Tools (github.com/ajlkn/responsive-tools) \ No newline at end of file diff --git a/about.html b/about.html new file mode 100644 index 0000000..55aaf09 --- /dev/null +++ b/about.html @@ -0,0 +1,158 @@ + + + + + NewPipe e. V. + + + + + +
+ + + + + +
+
+
+ +
+
+
+

About us

+
+

+ NewPipe e. V. is a non-profit organization which supports technology (especially free and open source one), which enables using digital media and improves access to it. +

+
+ We want to realize this goal through the following means: +
    +
  • * organize public briefings, conferences or congresses
  • +
  • * support project groups which develop this technology, especially through financing their members
  • +
  • * accomplish public relations and provide advertisement materials for project groups
  • +
+
+

+ The organization is governed by these three board members. They make day to day decisions and represent the organization. Every half year they have a meeting which every member can attend. +

+
+
+ + +
+ +
+

Fabio

+ +
+ +
+
+ + +
+

Christian

+ +
+ +
+
+ +
+ +

Thjorven

+ +
    +
  • Age: 23 years
  • +
  • Occupation: electrician for automation technology, studying electrical engineering and information technology
  • +
  • Open source work: Maintainer of python-telegram-bot, writing blogposts for NewPipe.
  • +
  • Board member since 2022
  • +
+
+ +
+
+
+

+ They are supported in their work by Fynn, in the role of the cash auditor. +

+
+
+ +
+
+
+ + + + + + + + +
+ + + + + + + + + + diff --git a/assets/css/images/bg01.jpg b/assets/css/images/bg01.jpg new file mode 100644 index 0000000..4e08250 Binary files /dev/null and b/assets/css/images/bg01.jpg differ diff --git a/assets/css/images/bg02.jpg b/assets/css/images/bg02.jpg new file mode 100644 index 0000000..5b6e776 Binary files /dev/null and b/assets/css/images/bg02.jpg differ diff --git a/assets/css/images/bg03.jpg b/assets/css/images/bg03.jpg new file mode 100644 index 0000000..5b2b362 Binary files /dev/null and b/assets/css/images/bg03.jpg differ diff --git a/assets/css/images/bg04.jpg b/assets/css/images/bg04.jpg new file mode 100644 index 0000000..5935b88 Binary files /dev/null and b/assets/css/images/bg04.jpg differ diff --git a/assets/css/images/bg04.png b/assets/css/images/bg04.png new file mode 100644 index 0000000..86f2d60 Binary files /dev/null and b/assets/css/images/bg04.png differ diff --git a/assets/css/images/button-big-active.svg b/assets/css/images/button-big-active.svg new file mode 100644 index 0000000..5c0845a --- /dev/null +++ b/assets/css/images/button-big-active.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/css/images/button-big-hover.svg b/assets/css/images/button-big-hover.svg new file mode 100644 index 0000000..825ccc4 --- /dev/null +++ b/assets/css/images/button-big-hover.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/css/images/button-big.svg b/assets/css/images/button-big.svg new file mode 100644 index 0000000..9c9c3d9 --- /dev/null +++ b/assets/css/images/button-big.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/css/images/icon-checkmark.png b/assets/css/images/icon-checkmark.png new file mode 100644 index 0000000..ee840a1 Binary files /dev/null and b/assets/css/images/icon-checkmark.png differ diff --git a/assets/css/images/mobileUI-site-nav-opener-bg.svg b/assets/css/images/mobileUI-site-nav-opener-bg.svg new file mode 100644 index 0000000..ff46679 --- /dev/null +++ b/assets/css/images/mobileUI-site-nav-opener-bg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..34db671 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,2058 @@ +/* + Halcyonic by HTML5 UP + html5up.net | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +strong { + font-weight: bold; +} + +pre { + font-family: monospace; +} +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #4C4F52 url("images/bg03.jpg"); + color: #D7D4CA; + font-size: 13.5pt; + font-family: 'Arial'; + line-height: 1.85em; + font-weight: 300; + } + + input, textarea, select { + color: #474f51; + font-size: 13.5pt; + font-family: 'Arial'; + line-height: 1.85em; + font-weight: 300; + } + + ul, ol, p, dl { + margin: 0 0 2em 0; + } + + a { + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + .hidden { + text-decoration: none; + color: #fff; + } + + .hidden-blog { + text-decoration: none; + color: #D7D4CA !important; + } + + section > :last-child, + section:last-child, + .last-child { + margin-bottom: 0 !important; + } + + p.hide-a { + color: #D7D4CA; + } +/* Container */ + + .container { + margin: 0 auto; + max-width: 100%; + width: 1200px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1200px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: calc(100% - 40px); + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: calc(100% - 50px); + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: calc(100% - 40px); + } + + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 45px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-xlarge { + order: -1; + } + + .row > .col-1-xlarge { + width: 8.33333%; + } + + .row > .off-1-xlarge { + margin-left: 8.33333%; + } + + .row > .col-2-xlarge { + width: 16.66667%; + } + + .row > .off-2-xlarge { + margin-left: 16.66667%; + } + + .row > .col-3-xlarge { + width: 25%; + } + + .row > .off-3-xlarge { + margin-left: 25%; + } + + .row > .col-4-xlarge { + width: 33.33333%; + } + + .row > .off-4-xlarge { + margin-left: 33.33333%; + } + + .row > .col-5-xlarge { + width: 41.66667%; + } + + .row > .off-5-xlarge { + margin-left: 41.66667%; + } + + .row > .col-6-xlarge { + width: 50%; + } + + .row > .off-6-xlarge { + margin-left: 50%; + } + + .row > .col-7-xlarge { + width: 58.33333%; + } + + .row > .off-7-xlarge { + margin-left: 58.33333%; + } + + .row > .col-8-xlarge { + width: 66.66667%; + } + + .row > .off-8-xlarge { + margin-left: 66.66667%; + } + + .row > .col-9-xlarge { + width: 75%; + } + + .row > .off-9-xlarge { + margin-left: 75%; + } + + .row > .col-10-xlarge { + width: 83.33333%; + } + + .row > .off-10-xlarge { + margin-left: 83.33333%; + } + + .row > .col-11-xlarge { + width: 91.66667%; + } + + .row > .off-11-xlarge { + margin-left: 91.66667%; + } + + .row > .col-12-xlarge { + width: 100%; + } + + .row > .off-12-xlarge { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 25px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-large { + order: -1; + } + + .row > .col-1-large { + width: 8.33333%; + } + + .row > .off-1-large { + margin-left: 8.33333%; + } + + .row > .col-2-large { + width: 16.66667%; + } + + .row > .off-2-large { + margin-left: 16.66667%; + } + + .row > .col-3-large { + width: 25%; + } + + .row > .off-3-large { + margin-left: 25%; + } + + .row > .col-4-large { + width: 33.33333%; + } + + .row > .off-4-large { + margin-left: 33.33333%; + } + + .row > .col-5-large { + width: 41.66667%; + } + + .row > .off-5-large { + margin-left: 41.66667%; + } + + .row > .col-6-large { + width: 50%; + } + + .row > .off-6-large { + margin-left: 50%; + } + + .row > .col-7-large { + width: 58.33333%; + } + + .row > .off-7-large { + margin-left: 58.33333%; + } + + .row > .col-8-large { + width: 66.66667%; + } + + .row > .off-8-large { + margin-left: 66.66667%; + } + + .row > .col-9-large { + width: 75%; + } + + .row > .off-9-large { + margin-left: 75%; + } + + .row > .col-10-large { + width: 83.33333%; + } + + .row > .off-10-large { + margin-left: 83.33333%; + } + + .row > .col-11-large { + width: 91.66667%; + } + + .row > .off-11-large { + margin-left: 91.66667%; + } + + .row > .col-12-large { + width: 100%; + } + + .row > .off-12-large { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -5px; + margin-left: -5px; + } + + .row.gtr-25 > * { + padding: 5px 0 0 5px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -5px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 5px; + } + + .row.gtr-50 { + margin-top: -10px; + margin-left: -10px; + } + + .row.gtr-50 > * { + padding: 10px 0 0 10px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -10px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 10px; + } + + .row { + margin-top: -20px; + margin-left: -20px; + } + + .row > * { + padding: 20px 0 0 20px; + } + + .row.gtr-uniform { + margin-top: -20px; + } + + .row.gtr-uniform > * { + padding-top: 20px; + } + + .row.gtr-150 { + margin-top: -30px; + margin-left: -30px; + } + + .row.gtr-150 > * { + padding: 30px 0 0 30px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -30px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 30px; + } + + .row.gtr-200 { + margin-top: -40px; + margin-left: -40px; + } + + .row.gtr-200 > * { + padding: 40px 0 0 40px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -40px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 40px; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-medium { + order: -1; + } + + .row > .col-1-medium { + width: 8.33333%; + } + + .row > .off-1-medium { + margin-left: 8.33333%; + } + + .row > .col-2-medium { + width: 16.66667%; + } + + .row > .off-2-medium { + margin-left: 16.66667%; + } + + .row > .col-3-medium { + width: 25%; + } + + .row > .off-3-medium { + margin-left: 25%; + } + + .row > .col-4-medium { + width: 33.33333%; + } + + .row > .off-4-medium { + margin-left: 33.33333%; + } + + .row > .col-5-medium { + width: 41.66667%; + } + + .row > .off-5-medium { + margin-left: 41.66667%; + } + + .row > .col-6-medium { + width: 50%; + } + + .row > .off-6-medium { + margin-left: 50%; + } + + .row > .col-7-medium { + width: 58.33333%; + } + + .row > .off-7-medium { + margin-left: 58.33333%; + } + + .row > .col-8-medium { + width: 66.66667%; + } + + .row > .off-8-medium { + margin-left: 66.66667%; + } + + .row > .col-9-medium { + width: 75%; + } + + .row > .off-9-medium { + margin-left: 75%; + } + + .row > .col-10-medium { + width: 83.33333%; + } + + .row > .off-10-medium { + margin-left: 83.33333%; + } + + .row > .col-11-medium { + width: 91.66667%; + } + + .row > .off-11-medium { + margin-left: 91.66667%; + } + + .row > .col-12-medium { + width: 100%; + } + + .row > .off-12-medium { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -6.25px; + margin-left: -6.25px; + } + + .row.gtr-25 > * { + padding: 6.25px 0 0 6.25px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -6.25px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 6.25px; + } + + .row.gtr-50 { + margin-top: -12.5px; + margin-left: -12.5px; + } + + .row.gtr-50 > * { + padding: 12.5px 0 0 12.5px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -12.5px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 12.5px; + } + + .row { + margin-top: -25px; + margin-left: -25px; + } + + .row > * { + padding: 25px 0 0 25px; + } + + .row.gtr-uniform { + margin-top: -25px; + } + + .row.gtr-uniform > * { + padding-top: 25px; + } + + .row.gtr-150 { + margin-top: -37.5px; + margin-left: -37.5px; + } + + .row.gtr-150 > * { + padding: 37.5px 0 0 37.5px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -37.5px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 37.5px; + } + + .row.gtr-200 { + margin-top: -50px; + margin-left: -50px; + } + + .row.gtr-200 > * { + padding: 50px 0 0 50px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -50px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 50px; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-small { + order: -1; + } + + .row > .col-1-small { + width: 8.33333%; + } + + .row > .off-1-small { + margin-left: 8.33333%; + } + + .row > .col-2-small { + width: 16.66667%; + } + + .row > .off-2-small { + margin-left: 16.66667%; + } + + .row > .col-3-small { + width: 25%; + } + + .row > .off-3-small { + margin-left: 25%; + } + + .row > .col-4-small { + width: 33.33333%; + } + + .row > .off-4-small { + margin-left: 33.33333%; + } + + .row > .col-5-small { + width: 41.66667%; + } + + .row > .off-5-small { + margin-left: 41.66667%; + } + + .row > .col-6-small { + width: 50%; + } + + .row > .off-6-small { + margin-left: 50%; + } + + .row > .col-7-small { + width: 58.33333%; + } + + .row > .off-7-small { + margin-left: 58.33333%; + } + + .row > .col-8-small { + width: 66.66667%; + } + + .row > .off-8-small { + margin-left: 66.66667%; + } + + .row > .col-9-small { + width: 75%; + } + + .row > .off-9-small { + margin-left: 75%; + } + + .row > .col-10-small { + width: 83.33333%; + } + + .row > .off-10-small { + margin-left: 83.33333%; + } + + .row > .col-11-small { + width: 91.66667%; + } + + .row > .off-11-small { + margin-left: 91.66667%; + } + + .row > .col-12-small { + width: 100%; + } + + .row > .off-12-small { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0px; + margin-left: 0px; + } + + .row.gtr-0 > * { + padding: 0px 0 0 0px; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0px; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0px; + } + + .row.gtr-25 { + margin-top: -5px; + margin-left: -5px; + } + + .row.gtr-25 > * { + padding: 5px 0 0 5px; + } + + .row.gtr-25.gtr-uniform { + margin-top: -5px; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 5px; + } + + .row.gtr-50 { + margin-top: -10px; + margin-left: -10px; + } + + .row.gtr-50 > * { + padding: 10px 0 0 10px; + } + + .row.gtr-50.gtr-uniform { + margin-top: -10px; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 10px; + } + + .row { + margin-top: -20px; + margin-left: -20px; + } + + .row > * { + padding: 20px 0 0 20px; + } + + .row.gtr-uniform { + margin-top: -20px; + } + + .row.gtr-uniform > * { + padding-top: 20px; + } + + .row.gtr-150 { + margin-top: -30px; + margin-left: -30px; + } + + .row.gtr-150 > * { + padding: 30px 0 0 30px; + } + + .row.gtr-150.gtr-uniform { + margin-top: -30px; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 30px; + } + + .row.gtr-200 { + margin-top: -40px; + margin-left: -40px; + } + + .row.gtr-200 > * { + padding: 40px 0 0 40px; + } + + .row.gtr-200.gtr-uniform { + margin-top: -40px; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 40px; + } + + } + +/* Multi-use */ + + .link-list li { + padding: 0.2em 0 0.2em 0; + } + + .link-list li:first-child { + padding-top: 0 !important; + border-top: 0 !important; + } + + .link-list li:last-child { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + + .quote-list li { + padding: 1em 0 1em 0; + overflow: hidden; + } + + .quote-list li:first-child { + padding-top: 0 !important; + border-top: 0 !important; + } + + .quote-list li:last-child { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + + .quote-list li img { + float: left; + } + + .quote-list li p { + margin: 0 0 0 90px; + font-style: italic; + } + + .quote-list li span { + display: block; + margin-left: 90px; + font-size: 0.9em; + font-weight: 400; + } + + .check-list li { + padding: 0.35em 0 0.35em 45px; + background: url("images/icon-checkmark.png") 0px 1.05em no-repeat; + } + + .check-list li:first-child { + padding-top: 0 !important; + border-top: 0 !important; + background-position: 0 0.3em; + } + + .check-list li:last-child { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + + .standard-list li { + padding: 0.3em 0 0.3em 20px; + font-style: italic; + list-style: disc; + list-style-position: inside; +} + @media screen and (max-width: 980px) { + + .standard-list li { + padding: 0.3em 0 0.3em 15px; + } +} + + @media screen and (max-width: 736px) { + .standard-list li { + padding: 0.3em 0 0.3em 25px; + } +} + .feature-image { + display: block; + margin: 0 0 2em 0; + outline: 0; + } + + .feature-image img { + display: block; + width: 100%; + } + + .bordered-feature-image { + display: block; + background: #fff url("images/bg04.png"); + padding: 10px; + box-shadow: 3px 3px 3px 1px rgba(0, 0, 0, 0.15); + margin: 0 0 1.5em 0; + outline: 0; + } + + .bordered-feature-image img { + display: block; + width: 100%; + } + + .button-large { + background-image: -moz-linear-gradient(top, #ed391b, #ce1a00); + background-image: -webkit-linear-gradient(top, #ed391b, #ce1a00); + background-image: -ms-linear-gradient(top, #ed391b, #ce1a00); + background-image: linear-gradient(top, #ed391b, #ce1a00); + display: inline-block; + background-color: #ed391b; + color: #fff; + text-decoration: none; + font-size: 1.75em; + height: 2em; + line-height: 2.125em; + font-weight: 300; + padding: 0 45px; + outline: 0; + border-radius: 10px; + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.5); + } + + .button-large:hover { + background-image: -moz-linear-gradient(top, #fd492b, #de2a10); + background-image: -webkit-linear-gradient(top, #fd492b, #de2a10); + background-image: -ms-linear-gradient(top, #fd492b, #de2a10); + background-image: linear-gradient(top, #fd492b, #de2a10); + background-color: #fd492b; + } + + .button-large:active { + background-image: -moz-linear-gradient(top, #ce1a00, #ed391b); + background-image: -webkit-linear-gradient(top, #ce1a00, #ed391b); + background-image: -ms-linear-gradient(top, #ce1a00, #ed391b); + background-image: linear-gradient(top, #ce1a00, #ed391b); + background-color: #ce1a00; + } + +/* Header */ + + #header { + position: relative; + background: #373C40; + box-shadow: inset 0px -1px 0px 0px #51575a; + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.75); + } + + #header > .container { + position: relative; + min-height: 155px; + } + + #header h1 { + position: absolute; + left: 0; + bottom: 35px; + font-size: 2.75em; + } + + #header h1 a { + color: #fff; + text-decoration: none; + } + + #header nav { + position: absolute; + right: 0; + bottom: 35px; + font-weight: 200; + } + + #header nav a { + color: #c6c8c8; + text-decoration: none; + font-size: 1.4em; + margin-left: 60px; + outline: 0; + } + + #header nav a:hover { + color: #f6f8f8; + } + + .subpage #header > .container { + height: 155px; + } + +/* Banner */ + + #banner { + border-top: solid 1px #222628; + box-shadow: inset 0px 1px 0px 0px #3e484a; + padding: 35px 0 35px 0; + color: #fff; + } + + #banner .bordered-feature-image { + margin-bottom: 0; + } + + #banner p { + font-size: 2em; + font-weight: 200; + line-height: 1.25em; + padding-right: 1em; + margin: 0 0 1em 0; + } + +/* Features */ + + #features { + background: #4C4F52; + border-bottom: solid 1px #272e31; + padding: 45px 0 45px 0; + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.75); + color: #FCFBF8; + } + + #features h2 { + font-size: 1.25em; + color: #fff; + margin: 0 0 0.85em 0; + } + + #features a { + color: #e0e8eb; + } + + #features strong { + color: #fff; + } + +/* Content */ + + #content { + background: #22272C; + padding: 45px 0 45px 0; + } + + #content section { + background: #36454F; + padding: 40px 30px 45px 30px; + box-shadow: 2px 2px 2px 1px rgba(128, 128, 128, 0.1); + margin: 0 0 25px 0; + } + + #content h2 { + font-size: 1.8em; + color: #acb4b7; + margin: 0 0 0.25em 0; + } + + #content h3 { + color: #708090; + font-size: 1.25em; + } + + #content h4 { + color: #708090; + } + + #content a { + color: #A22F1D; + } + + #content header { + margin: 0 0 2em 0; + } + + #content .quote-list li { + border-bottom: solid 1px #e2e6e8; + } + + #content .link-list li { + border-bottom: solid 1px #e2e6e8; + } + + #content .check-list li { + border-bottom: solid 1px #e2e6e8; + } + +/* Footer */ + + #footer { + padding: 45px 0 45px 0; + color: #822121; + text-align: center; + background: #71797E; + } + + #footer h2 { + font-size: 1.25em; + color: #212f35; + margin: 0 0 1em 0; + } + + #footer a { + color: #822121; + } + + #footer .quote-list li { + border-top: solid 1px #e0e4e6; + border-bottom: solid 1px #b5bec3; + } + + #footer .link-list li { + border-top: solid 1px #e0e4e6; + border-bottom: solid 1px #b5bec3; + } + + #footer .check-list li { + border-top: solid 1px #e0e4e6; + border-bottom: solid 1px #b5bec3; + } + +/* Copyright */ + + #copyright { + border-top: solid 1px #56595c; + box-shadow: inset 0px 1px 0px 0px #56595c; + text-align: center; + padding: 45px 0 80px 0; + color: #822121; + font-size: smaller; + background: #71797E; + } + + #copyright a { + color: #822121; + } + +/* Large */ + + @media screen and (max-width: 1280px) { + + /* Multi-use */ + + .check-list li { + font-size: 1em; + line-height: 2em; + } + + .quote-list li { + padding: 1em 0 1em 0; + } + + .quote-list li img { + width: 60px; + } + + .quote-list li p { + margin: 0 0 0 80px; + font-size: 1em; + font-style: italic; + line-height: 1.8em; + } + + .quote-list li span { + display: block; + margin-left: 80px; + font-size: 0.8em; + font-weight: 400; + line-height: 1.8em; + } + + .feature-image { + margin: 0 0 1em 0; + } + + .button-large { + font-size: 1.5em; + } + + /* Banner */ + + #banner p { + font-size: 1.75em; + } + + /* Header */ + + #header h1 { + font-size: 2.25em; + } + + #header nav a { + font-size: 1.1em; + } + + /* Content */ + + #content h2 { + font-size: 1.4em; + } + + #content h3 { + font-size: 1.1em; + } + + #content header { + margin: 0 0 1.25em 0; + } + + } + +/* Medium */ + + #navPanel, #titleBar { + display: none; + } + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + /* Header */ + + #header { + text-align: center; + } + + #header > .container:first-child { + display: none; + } + + /* Content */ + + #content { + padding: 25px 0; + } + + /* Nav */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + padding-top: 44px; + } + + #titleBar { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 44px; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 10001; + color: #fff; + background: #373C40; + box-shadow: inset 0px -20px 70px 0px rgba(200, 220, 245, 0.1), inset 0px -1px 0px 0px rgba(255, 255, 255, 0.1), 0px 1px 7px 0px rgba(0, 0, 0, 0.6); + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.75); + } + + #titleBar .title { + display: block; + text-align: center; + font-size: 1.2em; + font-weight: 400; + line-height: 48px; + } + + #titleBar .toggle { + position: absolute; + left: 0; + top: 0; + width: 80px; + height: 60px; + } + + #titleBar .toggle:after { + content: ''; + display: block; + position: absolute; + top: 6px; + left: 6px; + color: #fff; + background: rgba(255, 255, 255, 0.025); + box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.1), inset 0px 0px 0px 1px rgba(255, 255, 255, 0.05), inset 0px -8px 10px 0px rgba(0, 0, 0, 0.15), 0px 1px 2px 0px rgba(0, 0, 0, 0.25); + text-shadow: -1px -1px 1px black; + width: 49px; + height: 31px; + border-radius: 8px; + } + + #titleBar .toggle:before { + content: ''; + position: absolute; + width: 20px; + height: 30px; + background: url("images/mobileUI-site-nav-opener-bg.svg"); + top: 15px; + left: 20px; + z-index: 1; + opacity: 0.25; + } + + #titleBar .toggle:active:after { + background: rgba(255, 255, 255, 0.05); + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #373C40; + box-shadow: inset -1px 0px 0px 0px rgba(255, 255, 255, 0.25), inset -2px 0px 25px 0px rgba(0, 0, 0, 0.5); + text-shadow: -1px -1px 1px black; + } + + #navPanel .link { + display: block; + color: #fff; + text-decoration: none; + font-size: 1.25em; + line-height: 2em; + padding: 0.625em 1.5em 0.325em 1.5em; + border-top: solid 1px #373d40; + border-bottom: solid 1px rgba(0, 0, 0, 0.4); + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link:last-child { + border-bottom: 0; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #titleBar { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Small */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, textarea, select { + font-size: 13pt; + line-height: 1.4em; + } + + /* Multi-use */ + + .link-list li { + padding: 0.75em 0 0.75em 0; + } + + .quote-list li p { + margin-bottom: 0.5em; + } + + .check-list li { + font-size: 1em; + } + + .button-large { + width: 100%; + } + + /* Banner */ + + #banner p { + font-size: 1.25em; + font-weight: 200; + line-height: 1.25em; + margin: 0 0 1em 0; + } + + /* Content */ + + #content section { + padding: 30px 20px; + } + + #content h2 { + font-size: 1.25em; + } + + #content h3 { + font-size: 1em; + } + + #content header { + margin: 0 0 1.25em 0; + } + + /* Footer */ + + #footer .link-list { + margin: 0 0 10px 0 !important; + } + + /* Copyright */ + + #copyright { + padding: 20px 30px; + } + + } diff --git a/assets/js/breakpoints.min.js b/assets/js/breakpoints.min.js new file mode 100644 index 0000000..32419cc --- /dev/null +++ b/assets/js/breakpoints.min.js @@ -0,0 +1,2 @@ +/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ +var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0' + + '' + + '' + + '' + ) + .appendTo($body); + + // Panel. + $( + '' + ) + .appendTo($body) + .panel({ + delay: 500, + hideOnClick: true, + hideOnSwipe: true, + resetScroll: true, + resetForms: true, + side: 'left', + target: $body, + visibleClass: 'navPanel-visible' + }); +})(jQuery); diff --git a/assets/js/main.js~ b/assets/js/main.js~ new file mode 100644 index 0000000..d686bf3 --- /dev/null +++ b/assets/js/main.js~ @@ -0,0 +1,50 @@ +/* + Halcyonic by HTML5 UP + html5up.net | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +(function($) { + + var $window = $(window), + $body = $('body'); + + // Breakpoints. + breakpoints({ + xlarge: [ '1281px', '1680px' ], + large: [ '981px', '1280px' ], + medium: [ '737px', '980px' ], + small: [ null, '736px' ] + }); + + // Nav. + + // Title Bar. + $( + '
' + + '' + + '' + + '
' + ) + .appendTo($body); + + // Panel. + $( + '' + ) + .appendTo($body) + .panel({ + delay: 500, + hideOnClick: true, + hideOnSwipe: true, + resetScroll: true, + resetForms: true, + side: 'left', + target: $body, + visibleClass: 'navPanel-visible' + }); +})(jQuery); diff --git a/assets/js/util.js b/assets/js/util.js new file mode 100644 index 0000000..bdb8e9f --- /dev/null +++ b/assets/js/util.js @@ -0,0 +1,587 @@ +(function($) { + + /** + * Generate an indented list of links from a nav. Meant for use with panel(). + * @return {jQuery} jQuery object. + */ + $.fn.navList = function() { + + var $this = $(this); + $a = $this.find('a'), + b = []; + + $a.each(function() { + + var $this = $(this), + indent = Math.max(0, $this.parents('li').length - 1), + href = $this.attr('href'), + target = $this.attr('target'); + + b.push( + '' + + '' + + $this.text() + + '' + ); + + }); + + return b.join(''); + + }; + + /** + * Panel-ify an element. + * @param {object} userConfig User config. + * @return {jQuery} jQuery object. + */ + $.fn.panel = function(userConfig) { + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).panel(userConfig); + + return $this; + + } + + // Vars. + var $this = $(this), + $body = $('body'), + $window = $(window), + id = $this.attr('id'), + config; + + // Config. + config = $.extend({ + + // Delay. + delay: 0, + + // Hide panel on link click. + hideOnClick: false, + + // Hide panel on escape keypress. + hideOnEscape: false, + + // Hide panel on swipe. + hideOnSwipe: false, + + // Reset scroll position on hide. + resetScroll: false, + + // Reset forms on hide. + resetForms: false, + + // Side of viewport the panel will appear. + side: null, + + // Target element for "class". + target: $this, + + // Class to toggle. + visibleClass: 'visible' + + }, userConfig); + + // Expand "target" if it's not a jQuery object already. + if (typeof config.target != 'jQuery') + config.target = $(config.target); + + // Panel. + + // Methods. + $this._hide = function(event) { + + // Already hidden? Bail. + if (!config.target.hasClass(config.visibleClass)) + return; + + // If an event was provided, cancel it. + if (event) { + + event.preventDefault(); + event.stopPropagation(); + + } + + // Hide. + config.target.removeClass(config.visibleClass); + + // Post-hide stuff. + window.setTimeout(function() { + + // Reset scroll position. + if (config.resetScroll) + $this.scrollTop(0); + + // Reset forms. + if (config.resetForms) + $this.find('form').each(function() { + this.reset(); + }); + + }, config.delay); + + }; + + // Vendor fixes. + $this + .css('-ms-overflow-style', '-ms-autohiding-scrollbar') + .css('-webkit-overflow-scrolling', 'touch'); + + // Hide on click. + if (config.hideOnClick) { + + $this.find('a') + .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)'); + + $this + .on('click', 'a', function(event) { + + var $a = $(this), + href = $a.attr('href'), + target = $a.attr('target'); + + if (!href || href == '#' || href == '' || href == '#' + id) + return; + + // Cancel original event. + event.preventDefault(); + event.stopPropagation(); + + // Hide panel. + $this._hide(); + + // Redirect to href. + window.setTimeout(function() { + + if (target == '_blank') + window.open(href); + else + window.location.href = href; + + }, config.delay + 10); + + }); + + } + + // Event: Touch stuff. + $this.on('touchstart', function(event) { + + $this.touchPosX = event.originalEvent.touches[0].pageX; + $this.touchPosY = event.originalEvent.touches[0].pageY; + + }) + + $this.on('touchmove', function(event) { + + if ($this.touchPosX === null + || $this.touchPosY === null) + return; + + var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX, + diffY = $this.touchPosY - event.originalEvent.touches[0].pageY, + th = $this.outerHeight(), + ts = ($this.get(0).scrollHeight - $this.scrollTop()); + + // Hide on swipe? + if (config.hideOnSwipe) { + + var result = false, + boundary = 20, + delta = 50; + + switch (config.side) { + + case 'left': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta); + break; + + case 'right': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta)); + break; + + case 'top': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta); + break; + + case 'bottom': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta)); + break; + + default: + break; + + } + + if (result) { + + $this.touchPosX = null; + $this.touchPosY = null; + $this._hide(); + + return false; + + } + + } + + // Prevent vertical scrolling past the top or bottom. + if (($this.scrollTop() < 0 && diffY < 0) + || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) { + + event.preventDefault(); + event.stopPropagation(); + + } + + }); + + // Event: Prevent certain events inside the panel from bubbling. + $this.on('click touchend touchstart touchmove', function(event) { + event.stopPropagation(); + }); + + // Event: Hide panel if a child anchor tag pointing to its ID is clicked. + $this.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.removeClass(config.visibleClass); + + }); + + // Body. + + // Event: Hide panel on body click/tap. + $body.on('click touchend', function(event) { + $this._hide(event); + }); + + // Event: Toggle. + $body.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.toggleClass(config.visibleClass); + + }); + + // Window. + + // Event: Hide on ESC. + if (config.hideOnEscape) + $window.on('keydown', function(event) { + + if (event.keyCode == 27) + $this._hide(event); + + }); + + return $this; + + }; + + /** + * Apply "placeholder" attribute polyfill to one or more forms. + * @return {jQuery} jQuery object. + */ + $.fn.placeholder = function() { + + // Browser natively supports placeholders? Bail. + if (typeof (document.createElement('input')).placeholder != 'undefined') + return $(this); + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).placeholder(); + + return $this; + + } + + // Vars. + var $this = $(this); + + // Text, TextArea. + $this.find('input[type=text],textarea') + .each(function() { + + var i = $(this); + + if (i.val() == '' + || i.val() == i.attr('placeholder')) + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('blur', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == '') + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('focus', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == i.attr('placeholder')) + i + .removeClass('polyfill-placeholder') + .val(''); + + }); + + // Password. + $this.find('input[type=password]') + .each(function() { + + var i = $(this); + var x = $( + $('
') + .append(i.clone()) + .remove() + .html() + .replace(/type="password"/i, 'type="text"') + .replace(/type=password/i, 'type=text') + ); + + if (i.attr('id') != '') + x.attr('id', i.attr('id') + '-polyfill-field'); + + if (i.attr('name') != '') + x.attr('name', i.attr('name') + '-polyfill-field'); + + x.addClass('polyfill-placeholder') + .val(x.attr('placeholder')).insertAfter(i); + + if (i.val() == '') + i.hide(); + else + x.hide(); + + i + .on('blur', function(event) { + + event.preventDefault(); + + var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + + i.hide(); + x.show(); + + } + + }); + + x + .on('focus', function(event) { + + event.preventDefault(); + + var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']'); + + x.hide(); + + i + .show() + .focus(); + + }) + .on('keypress', function(event) { + + event.preventDefault(); + x.val(''); + + }); + + }); + + // Events. + $this + .on('submit', function() { + + $this.find('input[type=text],input[type=password],textarea') + .each(function(event) { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + i.attr('name', ''); + + if (i.val() == i.attr('placeholder')) { + + i.removeClass('polyfill-placeholder'); + i.val(''); + + } + + }); + + }) + .on('reset', function(event) { + + event.preventDefault(); + + $this.find('select') + .val($('option:first').val()); + + $this.find('input,textarea') + .each(function() { + + var i = $(this), + x; + + i.removeClass('polyfill-placeholder'); + + switch (this.type) { + + case 'submit': + case 'reset': + break; + + case 'password': + i.val(i.attr('defaultValue')); + + x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + i.hide(); + x.show(); + } + else { + i.show(); + x.hide(); + } + + break; + + case 'checkbox': + case 'radio': + i.attr('checked', i.attr('defaultValue')); + break; + + case 'text': + case 'textarea': + i.val(i.attr('defaultValue')); + + if (i.val() == '') { + i.addClass('polyfill-placeholder'); + i.val(i.attr('placeholder')); + } + + break; + + default: + i.val(i.attr('defaultValue')); + break; + + } + }); + + }); + + return $this; + + }; + + /** + * Moves elements to/from the first positions of their respective parents. + * @param {jQuery} $elements Elements (or selector) to move. + * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations. + */ + $.prioritize = function($elements, condition) { + + var key = '__prioritize'; + + // Expand $elements if it's not already a jQuery object. + if (typeof $elements != 'jQuery') + $elements = $($elements); + + // Step through elements. + $elements.each(function() { + + var $e = $(this), $p, + $parent = $e.parent(); + + // No parent? Bail. + if ($parent.length == 0) + return; + + // Not moved? Move it. + if (!$e.data(key)) { + + // Condition is false? Bail. + if (!condition) + return; + + // Get placeholder (which will serve as our point of reference for when this element needs to move back). + $p = $e.prev(); + + // Couldn't find anything? Means this element's already at the top, so bail. + if ($p.length == 0) + return; + + // Move element to top of parent. + $e.prependTo($parent); + + // Mark element as moved. + $e.data(key, $p); + + } + + // Moved already? + else { + + // Condition is true? Bail. + if (condition) + return; + + $p = $e.data(key); + + // Move element back to its original location (using our placeholder). + $e.insertAfter($p); + + // Unmark element as moved. + $e.removeData(key); + + } + + }); + + }; + +})(jQuery); \ No newline at end of file diff --git a/assets/sass/libs/_breakpoints.scss b/assets/sass/libs/_breakpoints.scss new file mode 100644 index 0000000..c5301d8 --- /dev/null +++ b/assets/sass/libs/_breakpoints.scss @@ -0,0 +1,223 @@ +// breakpoints.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Breakpoints. + /// @var {list} + $breakpoints: () !global; + +// Mixins. + + /// Sets breakpoints. + /// @param {map} $x Breakpoints. + @mixin breakpoints($x: ()) { + $breakpoints: $x !global; + } + + /// Wraps @content in a @media block targeting a specific orientation. + /// @param {string} $orientation Orientation. + @mixin orientation($orientation) { + @media screen and (orientation: #{$orientation}) { + @content; + } + } + + /// Wraps @content in a @media block using a given query. + /// @param {string} $query Query. + @mixin breakpoint($query: null) { + + $breakpoint: null; + $op: null; + $media: null; + + // Determine operator, breakpoint. + + // Greater than or equal. + @if (str-slice($query, 0, 2) == '>=') { + + $op: 'gte'; + $breakpoint: str-slice($query, 3); + + } + + // Less than or equal. + @elseif (str-slice($query, 0, 2) == '<=') { + + $op: 'lte'; + $breakpoint: str-slice($query, 3); + + } + + // Greater than. + @elseif (str-slice($query, 0, 1) == '>') { + + $op: 'gt'; + $breakpoint: str-slice($query, 2); + + } + + // Less than. + @elseif (str-slice($query, 0, 1) == '<') { + + $op: 'lt'; + $breakpoint: str-slice($query, 2); + + } + + // Not. + @elseif (str-slice($query, 0, 1) == '!') { + + $op: 'not'; + $breakpoint: str-slice($query, 2); + + } + + // Equal. + @else { + + $op: 'eq'; + $breakpoint: $query; + + } + + // Build media. + @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { + + $a: map-get($breakpoints, $breakpoint); + + // Range. + @if (type-of($a) == 'list') { + + $x: nth($a, 1); + $y: nth($a, 2); + + // Max only. + @if ($x == null) { + + // Greater than or equal (>= 0 / anything) + @if ($op == 'gte') { + $media: 'screen'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< 0 / invalid) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: -1px)'; + } + + // Not (> y) + @elseif ($op == 'not') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (<= y) + @else { + $media: 'screen and (max-width: ' + $y + ')'; + } + + } + + // Min only. + @else if ($y == null) { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= inf / anything) + @elseif ($op == 'lte') { + $media: 'screen'; + } + + // Greater than (> inf / invalid) + @elseif ($op == 'gt') { + $media: 'screen and (max-width: -1px)'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Equal (>= x) + @else { + $media: 'screen and (min-width: ' + $x + ')'; + } + + } + + // Min and max. + @else { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x and > y) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (>= x and <= y) + @else { + $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; + } + + } + + } + + // String. + @else { + + // Missing a media type? Prefix with "screen". + @if (str-slice($a, 0, 1) == '(') { + $media: 'screen and ' + $a; + } + + // Otherwise, use as-is. + @else { + $media: $a; + } + + } + + } + + // Output. + @media #{$media} { + @content; + } + + } \ No newline at end of file diff --git a/assets/sass/libs/_functions.scss b/assets/sass/libs/_functions.scss new file mode 100644 index 0000000..f563aab --- /dev/null +++ b/assets/sass/libs/_functions.scss @@ -0,0 +1,90 @@ +/// Removes a specific item from a list. +/// @author Hugo Giraudel +/// @param {list} $list List. +/// @param {integer} $index Index. +/// @return {list} Updated list. +@function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + +} + +/// Gets a value from a map. +/// @author Hugo Giraudel +/// @param {map} $map Map. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function val($map, $keys...) { + + @if nth($keys, 1) == null { + $keys: remove-nth($keys, 1); + } + + @each $key in $keys { + $map: map-get($map, $key); + } + + @return $map; + +} + +/// Gets a duration value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _duration($keys...) { + @return val($duration, $keys...); +} + +/// Gets a font value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _font($keys...) { + @return val($font, $keys...); +} + +/// Gets a misc value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _misc($keys...) { + @return val($misc, $keys...); +} + +/// Gets a palette value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _palette($keys...) { + @return val($palette, $keys...); +} + +/// Gets a size value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _size($keys...) { + @return val($size, $keys...); +} \ No newline at end of file diff --git a/assets/sass/libs/_html-grid.scss b/assets/sass/libs/_html-grid.scss new file mode 100644 index 0000000..7438a8c --- /dev/null +++ b/assets/sass/libs/_html-grid.scss @@ -0,0 +1,149 @@ +// html-grid.scss v1.0 | @ajlkn | MIT licensed */ + +// Mixins. + + /// Initializes the current element as an HTML grid. + /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually). + /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list). + @mixin html-grid($gutters: 1.5em, $suffix: '') { + + // Initialize. + $cols: 12; + $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00; + $unit: 100% / $cols; + + // Suffixes. + $suffixes: null; + + @if (type-of($suffix) == 'list') { + $suffixes: $suffix; + } + @else { + $suffixes: ($suffix); + } + + // Gutters. + $guttersCols: null; + $guttersRows: null; + + @if (type-of($gutters) == 'list') { + + $guttersCols: nth($gutters, 1); + $guttersRows: nth($gutters, 2); + + } + @else { + + $guttersCols: $gutters; + $guttersRows: 0; + + } + + // Row. + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + + // Columns. + > * { + box-sizing: border-box; + } + + // Gutters. + &.gtr-uniform { + > * { + > :last-child { + margin-bottom: 0; + } + } + } + + // Alignment. + &.aln-left { + justify-content: flex-start; + } + + &.aln-center { + justify-content: center; + } + + &.aln-right { + justify-content: flex-end; + } + + &.aln-top { + align-items: flex-start; + } + + &.aln-middle { + align-items: center; + } + + &.aln-bottom { + align-items: flex-end; + } + + // Step through suffixes. + @each $suffix in $suffixes { + + // Suffix. + @if ($suffix != '') { + $suffix: '-' + $suffix; + } + @else { + $suffix: ''; + } + + // Row. + + // Important. + > .imp#{$suffix} { + order: -1; + } + + // Columns, offsets. + @for $i from 1 through $cols { + > .col-#{$i}#{$suffix} { + width: $unit * $i; + } + + > .off-#{$i}#{$suffix} { + margin-left: $unit * $i; + } + } + + // Step through multipliers. + @each $multiplier in $multipliers { + + // Gutters. + $class: null; + + @if ($multiplier != 1) { + $class: '.gtr-' + ($multiplier * 100); + } + + &#{$class} { + margin-top: ($guttersRows * $multiplier * -1); + margin-left: ($guttersCols * $multiplier * -1); + + > * { + padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier); + } + + // Uniform. + &.gtr-uniform { + margin-top: $guttersCols * $multiplier * -1; + + > * { + padding-top: $guttersCols * $multiplier; + } + } + + } + + } + + } + + } \ No newline at end of file diff --git a/assets/sass/libs/_mixins.scss b/assets/sass/libs/_mixins.scss new file mode 100644 index 0000000..a331483 --- /dev/null +++ b/assets/sass/libs/_mixins.scss @@ -0,0 +1,78 @@ +/// Makes an element's :before pseudoelement a FontAwesome icon. +/// @param {string} $content Optional content value to use. +/// @param {string} $category Optional category to use. +/// @param {string} $where Optional pseudoelement to target (before or after). +@mixin icon($content: false, $category: regular, $where: before) { + + text-decoration: none; + + &:#{$where} { + + @if $content { + content: $content; + } + + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + + @if ($category == brands) { + font-family: 'Font Awesome 5 Brands'; + } + @elseif ($category == solid) { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + @else { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + } + +} + +/// Applies padding to an element, taking the current element-margin value into account. +/// @param {mixed} $tb Top/bottom padding. +/// @param {mixed} $lr Left/right padding. +/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) +/// @param {bool} $important If true, adds !important. +@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { + + @if $important { + $important: '!important'; + } + + $x: 0.1em; + + @if unit(_size(element-margin)) == 'rem' { + $x: 0.1rem; + } + + padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; + +} + +/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). +/// @param {string} $svg SVG data URL. +/// @return {string} Encoded SVG data URL. +@function svg-url($svg) { + + $svg: str-replace($svg, '"', '\''); + $svg: str-replace($svg, '%', '%25'); + $svg: str-replace($svg, '<', '%3C'); + $svg: str-replace($svg, '>', '%3E'); + $svg: str-replace($svg, '&', '%26'); + $svg: str-replace($svg, '#', '%23'); + $svg: str-replace($svg, '{', '%7B'); + $svg: str-replace($svg, '}', '%7D'); + $svg: str-replace($svg, ';', '%3B'); + + @return url("data:image/svg+xml;charset=utf8,#{$svg}"); + +} \ No newline at end of file diff --git a/assets/sass/libs/_vars.scss b/assets/sass/libs/_vars.scss new file mode 100644 index 0000000..3358992 --- /dev/null +++ b/assets/sass/libs/_vars.scss @@ -0,0 +1,22 @@ +// Misc. + $misc: ( + z-index-base: 10000 + ); + +// Duration. + $duration: ( + navPanel: 0.5s + ); + +// Size. + $size: ( + navPanel: 275px + ); + +// Font. + $font: ( + ); + +// Palette. + $palette: ( + ); \ No newline at end of file diff --git a/assets/sass/libs/_vendor.scss b/assets/sass/libs/_vendor.scss new file mode 100644 index 0000000..6599a3f --- /dev/null +++ b/assets/sass/libs/_vendor.scss @@ -0,0 +1,376 @@ +// vendor.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Vendor prefixes. + /// @var {list} + $vendor-prefixes: ( + '-moz-', + '-webkit-', + '-ms-', + '' + ); + + /// Properties that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-properties: ( + + // Animation. + 'animation', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-timing-function', + + // Appearance. + 'appearance', + + // Backdrop filter. + 'backdrop-filter', + + // Background image options. + 'background-clip', + 'background-origin', + 'background-size', + + // Box sizing. + 'box-sizing', + + // Clip path. + 'clip-path', + + // Filter effects. + 'filter', + + // Flexbox. + 'align-content', + 'align-items', + 'align-self', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'justify-content', + 'order', + + // Font feature. + 'font-feature-settings', + 'font-language-override', + 'font-variant-ligatures', + + // Font kerning. + 'font-kerning', + + // Fragmented borders and backgrounds. + 'box-decoration-break', + + // Grid layout. + 'grid-column', + 'grid-column-align', + 'grid-column-end', + 'grid-column-start', + 'grid-row', + 'grid-row-align', + 'grid-row-end', + 'grid-row-start', + 'grid-template-columns', + 'grid-template-rows', + + // Hyphens. + 'hyphens', + 'word-break', + + // Masks. + 'mask', + 'mask-border', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + + // Multicolumn. + 'break-after', + 'break-before', + 'break-inside', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + + // Object fit. + 'object-fit', + 'object-position', + + // Regions. + 'flow-from', + 'flow-into', + 'region-fragment', + + // Scroll snap points. + 'scroll-snap-coordinate', + 'scroll-snap-destination', + 'scroll-snap-points-x', + 'scroll-snap-points-y', + 'scroll-snap-type', + + // Shapes. + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + + // Tab size. + 'tab-size', + + // Text align last. + 'text-align-last', + + // Text decoration. + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-style', + + // Text emphasis. + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + + // Text size adjust. + 'text-size-adjust', + + // Text spacing. + 'text-spacing', + + // Transform. + 'transform', + 'transform-origin', + + // Transform 3D. + 'backface-visibility', + 'perspective', + 'perspective-origin', + 'transform-style', + + // Transition. + 'transition', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + + // Unicode bidi. + 'unicode-bidi', + + // User select. + 'user-select', + + // Writing mode. + 'writing-mode', + + ); + + /// Values that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-values: ( + + // Cross fade. + 'cross-fade', + + // Element function. + 'element', + + // Filter function. + 'filter', + + // Flexbox. + 'flex', + 'inline-flex', + + // Grab cursors. + 'grab', + 'grabbing', + + // Gradients. + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient', + + // Grid layout. + 'grid', + 'inline-grid', + + // Image set. + 'image-set', + + // Intrinsic width. + 'max-content', + 'min-content', + 'fit-content', + 'fill', + 'fill-available', + 'stretch', + + // Sticky position. + 'sticky', + + // Transform. + 'transform', + + // Zoom cursors. + 'zoom-in', + 'zoom-out', + + ); + +// Functions. + + /// Removes a specific item from a list. + /// @author Hugo Giraudel + /// @param {list} $list List. + /// @param {integer} $index Index. + /// @return {list} Updated list. + @function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + + } + + /// Replaces a substring within another string. + /// @author Hugo Giraudel + /// @param {string} $string String. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {string} Updated string. + @function str-replace($string, $search, $replace: '') { + + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; + + } + + /// Replaces a substring within each string in a list. + /// @param {list} $strings List of strings. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {list} Updated list of strings. + @function str-replace-all($strings, $search, $replace: '') { + + @each $string in $strings { + $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); + } + + @return $strings; + + } + +// Mixins. + + /// Wraps @content in vendorized keyframe blocks. + /// @param {string} $name Name. + @mixin keyframes($name) { + + @-moz-keyframes #{$name} { @content; } + @-webkit-keyframes #{$name} { @content; } + @-ms-keyframes #{$name} { @content; } + @keyframes #{$name} { @content; } + + } + + /// Vendorizes a declaration's property and/or value(s). + /// @param {string} $property Property. + /// @param {mixed} $value String/list of value(s). + @mixin vendor($property, $value) { + + // Determine if property should expand. + $expandProperty: index($vendor-properties, $property); + + // Determine if value should expand (and if so, add '-prefix-' placeholder). + $expandValue: false; + + @each $x in $value { + @each $y in $vendor-values { + @if $y == str-slice($x, 1, str-length($y)) { + + $value: set-nth($value, index($value, $x), '-prefix-' + $x); + $expandValue: true; + + } + } + } + + // Expand property? + @if $expandProperty { + @each $vendor in $vendor-prefixes { + #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Expand just the value? + @elseif $expandValue { + @each $vendor in $vendor-prefixes { + #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Neither? Treat them as a normal declaration. + @else { + #{$property}: #{$value}; + } + + } \ No newline at end of file diff --git a/assets/sass/main.scss b/assets/sass/main.scss new file mode 100644 index 0000000..032a7a7 --- /dev/null +++ b/assets/sass/main.scss @@ -0,0 +1,840 @@ +@import 'libs/vars'; +@import 'libs/functions'; +@import 'libs/mixins'; +@import 'libs/vendor'; +@import 'libs/breakpoints'; +@import 'libs/html-grid'; +@import url('https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:400,300,200'); + +/* + Halcyonic by HTML5 UP + html5up.net | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +// Breakpoints. + + @include breakpoints(( + xlarge: ( 1281px, 1680px ), + large: ( 981px, 1280px ), + medium: ( 737px, 980px ), + small: ( null, 736px ) + )); + +// Reset. +// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain) + + html, body, div, span, applet, object, + iframe, h1, h2, h3, h4, h5, h6, p, blockquote, + pre, a, abbr, acronym, address, big, cite, + code, del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, b, + u, i, center, dl, dt, dd, ol, ul, li, fieldset, + form, label, legend, table, caption, tbody, + tfoot, thead, tr, th, td, article, aside, + canvas, details, embed, figure, figcaption, + footer, header, hgroup, menu, nav, output, ruby, + section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + } + + article, aside, details, figcaption, figure, + footer, header, hgroup, menu, nav, section { + display: block; + } + + body { + line-height: 1; + } + + ol, ul { + list-style: none; + } + + blockquote, q { + quotes: none; + + &:before, + &:after { + content: ''; + content: none; + } + } + + table { + border-collapse: collapse; + border-spacing: 0; + } + + body { + -webkit-text-size-adjust: none; + } + + mark { + background-color: transparent; + color: inherit; + } + + input::-moz-focus-inner { + border: 0; + padding: 0; + } + + input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + } + +/* Basic */ + + // Set box model to border-box. + // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #D4D9DD url('images/bg03.jpg'); + color: #474f51; + font-size: 13.5pt; + font-family: 'Yanone Kaffeesatz'; + line-height: 1.85em; + font-weight: 300; + } + + input, textarea, select { + color: #474f51; + font-size: 13.5pt; + font-family: 'Yanone Kaffeesatz'; + line-height: 1.85em; + font-weight: 300; + } + + ul, ol, p, dl { + margin: 0 0 2em 0; + } + + a { + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + + section > :last-child, + section:last-child, + .last-child { + margin-bottom: 0 !important; + } + +/* Container */ + + .container { + margin: 0 auto; + max-width: 100%; + width: 1200px; + + @include breakpoint('<=xlarge') { + width: 1200px; + } + + @include breakpoint('<=large') { + width: calc(100% - 40px); + } + + @include breakpoint('<=medium') { + width: calc(100% - 50px); + } + + @include breakpoint('<=small') { + width: calc(100% - 40px); + } + } + +/* Row */ + + .row { + @include html-grid((25px, 25px)); + + @include breakpoint('<=xlarge') { + @include html-grid((25px, 25px), 'xlarge'); + } + + @include breakpoint('<=large') { + @include html-grid((20px, 20px), 'large'); + } + + @include breakpoint('<=medium') { + @include html-grid((25px, 25px), 'medium'); + } + + @include breakpoint('<=small') { + @include html-grid((20px, 20px), 'small'); + } + } + +/* Multi-use */ + + .link-list { + li { + padding: 0.2em 0 0.2em 0; + + &:first-child { + padding-top: 0 !important; + border-top: 0 !important; + } + + &:last-child { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + } + } + + .quote-list { + li { + padding: 1em 0 1em 0; + overflow: hidden; + + &:first-child { + padding-top: 0 !important; + border-top: 0 !important; + } + + &:last-child { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + + img { + float: left; + } + + p { + margin: 0 0 0 90px; + font-size: 1.2em; + font-style: italic; + } + + span { + display: block; + margin-left: 90px; + font-size: 0.9em; + font-weight: 400; + } + } + } + + .check-list { + li { + padding: 0.7em 0 0.7em 45px; + font-size: 1.2em; + background: url('images/icon-checkmark.png') 0px 1.05em no-repeat; + + &:first-child { + padding-top: 0 !important; + border-top: 0 !important; + background-position: 0 0.3em; + } + + &:last-child { + padding-bottom: 0 !important; + border-bottom: 0 !important; + } + } + } + + .feature-image { + display: block; + margin: 0 0 2em 0; + outline: 0; + + img { + display: block; + width: 100%; + } + } + + .bordered-feature-image { + display: block; + background: #fff url('images/bg04.png'); + padding: 10px; + box-shadow: 3px 3px 3px 1px rgba(0, 0, 0, 0.15); + margin: 0 0 1.5em 0; + outline: 0; + img { + display: block; + width: 100%; + } + } + + .button-large { + @include vendor('background-image', 'linear-gradient(top, #ed391b, #ce1a00)'); + display: inline-block; + background-color: #ed391b; + color: #fff; + text-decoration: none; + font-size: 1.75em; + height: 2em; + line-height: 2.125em; + font-weight: 300; + padding: 0 45px; + outline: 0; + border-radius: 10px; + box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.75), inset 0px 2px 0px 0px rgba(255, 192, 192, 0.5), inset 0px 0px 0px 2px rgba(255, 96, 96, 0.85), 3px 3px 3px 1px rgba(0, 0, 0, 0.15); + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.5); + + &:hover { + @include vendor('background-image', 'linear-gradient(top, #fd492b, #de2a10)'); + background-color: #fd492b; + box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.75), inset 0px 2px 0px 0px rgba(255, 192, 192, 0.5), inset 0px 0px 0px 2px rgba(255, 96, 96, 0.85), 3px 3px 3px 1px rgba(0, 0, 0, 0.15); + } + + &:active { + @include vendor('background-image', 'linear-gradient(top, #ce1a00, #ed391b)'); + background-color: #ce1a00; + box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.75), inset 0px 2px 0px 0px rgba(255, 192, 192, 0.5), inset 0px 0px 0px 2px rgba(255, 96, 96, 0.85), 3px 3px 3px 1px rgba(0, 0, 0, 0.15); + } + } + +/* Header */ + + #header { + position: relative; + background: #3B4346 url('images/bg01.jpg'); + border-bottom: solid 1px #272d30; + box-shadow: inset 0px -1px 0px 0px #51575a; + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.75); + + > .container { + position: relative; + min-height: 155px; + } + + h1 { + position: absolute; + left: 0; + bottom: 35px; + font-size: 2.75em; + + a { + color: #fff; + text-decoration: none; + } + } + + nav { + position: absolute; + right: 0; + bottom: 35px; + font-weight: 200; + + a { + color: #c6c8c8; + text-decoration: none; + font-size: 1.4em; + margin-left: 60px; + outline: 0; + + &:hover { + color: #f6f8f8; + } + } + } + + .subpage & { + > .container { + height: 155px; + } + } + } + +/* Banner */ + + #banner { + border-top: solid 1px #222628; + box-shadow: inset 0px 1px 0px 0px #3e484a; + padding: 35px 0 35px 0; + color: #fff; + + .bordered-feature-image { + margin-bottom: 0; + } + + p { + font-size: 2em; + font-weight: 200; + line-height: 1.25em; + padding-right: 1em; + margin: 0 0 1em 0; + } + } + +/* Features */ + + #features { + background: #353D40 url('images/bg02.jpg'); + border-bottom: solid 1px #272e31; + padding: 45px 0 45px 0; + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.75); + color: #a0a8ab; + + h2 { + font-size: 1.25em; + color: #fff; + margin: 0 0 0.25em 0; + } + + a { + color: #e0e8eb; + } + + strong { + color: #fff; + } + } + +/* Content */ + + #content { + background: #f7f7f7 url('images/bg04.png'); + border-top: solid 1px #fff; + padding: 45px 0 45px 0; + + section { + background: #fff; + padding: 40px 30px 45px 30px; + box-shadow: 2px 2px 2px 1px rgba(128, 128, 128, 0.1); + margin: 0 0 25px 0; + } + + h2 { + font-size: 1.8em; + color: #373f42; + margin: 0 0 0.25em 0; + } + + h3 { + color: #96a9b5; + font-size: 1.25em; + } + + a { + color: #ED391B; + } + + header { + margin: 0 0 2em 0; + } + + .quote-list { + li { + border-bottom: solid 1px #e2e6e8; + } + } + + .link-list { + li { + border-bottom: solid 1px #e2e6e8; + } + } + + .check-list { + li { + border-bottom: solid 1px #e2e6e8; + } + } + } + +/* Footer */ + + #footer { + padding: 45px 0 45px 0; + text-shadow: 1px 1px 1px rgba(255, 255, 255, 1); + color: #546b76; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.5); + + h2 { + font-size: 1.25em; + color: #212f35; + margin: 0 0 1em 0; + } + + a { + color: #546b76; + } + + .quote-list { + li { + border-top: solid 1px #e0e4e6; + border-bottom: solid 1px #b5bec3; + } + } + + .link-list { + li { + border-top: solid 1px #e0e4e6; + border-bottom: solid 1px #b5bec3; + } + } + + .check-list { + li { + border-top: solid 1px #e0e4e6; + border-bottom: solid 1px #b5bec3; + } + } + } + +/* Copyright */ + + #copyright { + border-top: solid 1px #b5bec3; + box-shadow: inset 0px 1px 0px 0px #e0e4e7; + text-align: center; + padding: 45px 0 80px 0; + color: #8d9ca3; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.5); + + a { + color: #8d9ca3; + } + } + +/* Large */ + + @include breakpoint('<=large') { + + /* Multi-use */ + + .check-list { + li { + font-size: 1em; + line-height: 2em; + } + } + + .quote-list { + li { + padding: 1em 0 1em 0; + + img { + width: 60px; + } + p { + margin: 0 0 0 80px; + font-size: 1em; + font-style: italic; + line-height: 1.8em; + } + span { + display: block; + margin-left: 80px; + font-size: 0.8em; + font-weight: 400; + line-height: 1.8em; + } + } + } + + .feature-image { + margin: 0 0 1em 0; + } + + .button-large { + font-size: 1.5em; + } + + /* Banner */ + + #banner { + p { + font-size: 1.75em; + } + } + + /* Header */ + + #header { + h1 { + font-size: 2.25em; + } + + nav { + a { + font-size: 1.1em; + } + } + } + + /* Content */ + + #content { + h2 { + font-size: 1.4em; + } + + h3 { + font-size: 1.1em; + } + + header { + margin: 0 0 1.25em 0; + } + } + + } + +/* Medium */ + + #navPanel, #titleBar { + display: none; + } + + @include breakpoint('<=medium') { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + /* Header */ + + #header { + text-align: center; + + > .container:first-child { + display: none; + } + } + + /* Content */ + + #content { + padding: 25px 0; + } + + /* Nav */ + + #page-wrapper { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transition', 'transform #{_duration(navPanel)} ease'); + padding-bottom: 1px; + padding-top: 44px; + } + + #titleBar { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transition', 'transform #{_duration(navPanel)} ease'); + display: block; + height: 44px; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: _misc(z-index-base) + 1; + color: #fff; + background: url('images/bg04.jpg'); + box-shadow: inset 0px -20px 70px 0px rgba(200, 220, 245, 0.1), inset 0px -1px 0px 0px rgba(255, 255, 255, 0.1), 0px 1px 7px 0px rgba(0, 0, 0, 0.6); + text-shadow: -1px -1px 1px rgba(0, 0, 0, 0.75); + + .title { + display: block; + text-align: center; + font-size: 1.2em; + font-weight: 400; + line-height: 48px; + } + + .toggle { + position: absolute; + left: 0; + top: 0; + width: 80px; + height: 60px; + + &:after { + content: ''; + display: block; + position: absolute; + top: 6px; + left: 6px; + color: #fff; + background: rgba(255, 255, 255, 0.025); + box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.1), inset 0px 0px 0px 1px rgba(255, 255, 255, 0.05), inset 0px -8px 10px 0px rgba(0, 0, 0, 0.15), 0px 1px 2px 0px rgba(0, 0, 0, 0.25); + text-shadow: -1px -1px 1px rgba(0, 0, 0, 1); + width: 49px; + height: 31px; + border-radius: 8px; + } + + &:before { + content: ''; + position: absolute; + width: 20px; + height: 30px; + background: url('images/mobileUI-site-nav-opener-bg.svg'); + top: 15px; + left: 20px; + z-index: 1; + opacity: 0.25; + } + + &:active { + &:after { + background: rgba(255, 255, 255, 0.05); + } + } + } + } + + #navPanel { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transform', 'translateX(#{_size(navPanel) * -1})'); + @include vendor('transition', ('transform #{_duration(navPanel)} ease')); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: _size(navPanel); + z-index: _misc(z-index-base) + 2; + background: url('images/bg04.jpg'); + box-shadow: inset -1px 0px 0px 0px rgba(255, 255, 255, 0.25), inset -2px 0px 25px 0px rgba(0, 0, 0, 0.5); + text-shadow: -1px -1px 1px rgba(0, 0, 0, 1); + + .link { + display: block; + color: #fff; + text-decoration: none; + font-size: 1.25em; + line-height: 2em; + padding: 0.625em 1.5em 0.325em 1.5em; + border-top: solid 1px #373d40; + border-bottom: solid 1px rgba(0, 0, 0, 0.4); + + &:first-child { + border-top: 0; + } + + &:last-child { + border-bottom: 0; + } + } + } + + body { + &.navPanel-visible { + #page-wrapper { + @include vendor('transform', 'translateX(#{_size(navPanel)})'); + } + + #titleBar { + @include vendor('transform', 'translateX(#{_size(navPanel)})'); + } + + #navPanel { + @include vendor('transform', 'translateX(0)'); + } + } + } + + } + +/* Small */ + + @include breakpoint('<=small') { + + /* Basic */ + + body, input, textarea, select { + font-size: 13pt; + line-height: 1.4em; + } + + /* Multi-use */ + + .link-list { + li { + padding: 0.75em 0 0.75em 0; + } + } + + .quote-list { + li { + p { + margin-bottom: 0.5em; + } + } + } + + .check-list { + li { + font-size: 1em; + } + } + + .button-large { + width: 100%; + } + + /* Banner */ + + #banner { + p { + font-size: 1.25em; + font-weight: 200; + line-height: 1.25em; + margin: 0 0 1em 0; + } + } + + /* Content */ + + #content { + section { + padding: 30px 20px; + } + + h2 { + font-size: 1.25em; + } + + h3 { + font-size: 1em; + } + + header { + margin: 0 0 1.25em 0; + } + } + + /* Footer */ + + #footer { + .link-list { + margin: 0 0 10px 0 !important; + } + } + + /* Copyright */ + + #copyright { + padding: 20px 30px; + } + + } \ No newline at end of file diff --git a/blog.html b/blog.html new file mode 100644 index 0000000..be2b11b --- /dev/null +++ b/blog.html @@ -0,0 +1,121 @@ + + + + + NewPipe e.V. + + + + + + + + + + + + + + + + diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..c02de7a --- /dev/null +++ b/contact.html @@ -0,0 +1,92 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Contact

+

+
+

+ For press inquiries please contact the board via email: board@newpipe-ev.de. +

+

+ Matrix is our group chat system of choice. Feel free to join it at #newpipe-ev:matrix.org. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/credits.html b/credits.html new file mode 100644 index 0000000..ede517a --- /dev/null +++ b/credits.html @@ -0,0 +1,99 @@ + + + + + NewPipe e.V. + + + + + +
+ + + +
+
+
+
+ + +
+
+

Credits

+

Credit where credit is due.

+
+

+ This website was built using the Halcyonic site template. + This template was published under CC By 3.0 + by AJ. We are very thankful to them for doing this, this website + would look a whole lot more technical/uglier without it. +

+

+ We also use pictures here, we got them from Unsplash, they are + licensed under the Unsplash license. + To be more specific, we have nametag by Jon Tyson, + Minimalist boardroom by Benjamin Child and + Hello by Tim Mossholder + (@timmossholder on instagram). + Thank you all for providing these for everyone to use, you all are awesome! +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/donate.html b/donate.html new file mode 100644 index 0000000..a91d222 --- /dev/null +++ b/donate.html @@ -0,0 +1,108 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Donate

+
+

+ You want to donate towards our association in order to forward our goals? Thank you! +

+

Current goal

+

+ We currently want to offer TeamNewPipe to pay for a developer to start rewriting bigger parts of the app. We need about XXX € monthly to afford this, we currently get YYY €. +

+

+ We offer the following ways to send us money: Via direct debit towards our bank account, IBAN DE94430609671308756300. This way has the fewest fees, so we get the most from your donation! +

+

+ Via liberapay, https://liberapay.com/TeamNewPipe/. +

+

+ Via OpenCollective, https://opencollective.com/lemmy. (Potentially tax deductable here?) +

+

+ Non profit, can I get a donation receipt? +

+

+ Due to our unique focus, we weren’t able to register the association as “beneficial to the public”, which is in Germany seperated from non profit. We still can not amount profits with this association and have to spend all money we get towards our associations ideal goals (and can not e.g. pay ourselves a salary or just buy stocks to make more money), but sadly do not get the same tax benefits. +

+ +
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/images/TNPlogo.svg b/images/TNPlogo.svg new file mode 100644 index 0000000..eca2af9 --- /dev/null +++ b/images/TNPlogo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/banner.jpg b/images/banner.jpg new file mode 100644 index 0000000..568592d Binary files /dev/null and b/images/banner.jpg differ diff --git a/images/christian.png b/images/christian.png new file mode 100644 index 0000000..4cefbc4 Binary files /dev/null and b/images/christian.png differ diff --git a/images/fabio.png b/images/fabio.png new file mode 100644 index 0000000..d91cda2 Binary files /dev/null and b/images/fabio.png differ diff --git a/images/hello.jpg b/images/hello.jpg new file mode 100644 index 0000000..c076909 Binary files /dev/null and b/images/hello.jpg differ diff --git a/images/meeting.jpg b/images/meeting.jpg new file mode 100644 index 0000000..8716df8 Binary files /dev/null and b/images/meeting.jpg differ diff --git a/images/nametag.jpg b/images/nametag.jpg new file mode 100644 index 0000000..4a13b2b Binary files /dev/null and b/images/nametag.jpg differ diff --git a/images/pic01.jpg b/images/pic01.jpg new file mode 100644 index 0000000..a4a9881 Binary files /dev/null and b/images/pic01.jpg differ diff --git a/images/pic02.jpg b/images/pic02.jpg new file mode 100644 index 0000000..5b5f0b4 Binary files /dev/null and b/images/pic02.jpg differ diff --git a/images/pic03.jpg b/images/pic03.jpg new file mode 100644 index 0000000..ea85435 Binary files /dev/null and b/images/pic03.jpg differ diff --git a/images/pic04.jpg b/images/pic04.jpg new file mode 100644 index 0000000..d357c90 Binary files /dev/null and b/images/pic04.jpg differ diff --git a/images/pic05.jpg b/images/pic05.jpg new file mode 100644 index 0000000..2bcd632 Binary files /dev/null and b/images/pic05.jpg differ diff --git a/images/pic06.jpg b/images/pic06.jpg new file mode 100644 index 0000000..b7012c3 Binary files /dev/null and b/images/pic06.jpg differ diff --git a/images/pic07.jpg b/images/pic07.jpg new file mode 100644 index 0000000..22d7754 Binary files /dev/null and b/images/pic07.jpg differ diff --git a/images/pic08.jpg b/images/pic08.jpg new file mode 100644 index 0000000..c1c0212 Binary files /dev/null and b/images/pic08.jpg differ diff --git a/images/qrdebit.png b/images/qrdebit.png new file mode 100644 index 0000000..3f10408 Binary files /dev/null and b/images/qrdebit.png differ diff --git a/images/qrstripe.png b/images/qrstripe.png new file mode 100644 index 0000000..20abd05 Binary files /dev/null and b/images/qrstripe.png differ diff --git a/images/thjorven.jpg b/images/thjorven.jpg new file mode 100644 index 0000000..e7bd109 Binary files /dev/null and b/images/thjorven.jpg differ diff --git a/images/thjorven.png b/images/thjorven.png new file mode 100644 index 0000000..3a7a425 Binary files /dev/null and b/images/thjorven.png differ diff --git a/imprint.html b/imprint.html new file mode 100644 index 0000000..b8d6622 --- /dev/null +++ b/imprint.html @@ -0,0 +1,165 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Imprint

+
+

+ Since we are a German association, we have to offer our imprint in German (which is the legal binding version), but as usually we translated it as best as we could so you can enjoy it in English as well. +

+ +
+
+

+ Legal notice according to § 5 TMG and § 55 RStV. +

+

+ NewPipe e. V.
+ Location: Weberstraße 14
+ c/o Thjorven Rubach
+ 22083 Hamburg +

+

+ Associations Register: 25263
+ District court: Hamburg +

+

Represented through:
+ Thjorven Rubach
+ Fabio Giovanazzi
+ Christian Schabesberger

+

+ Contact +

+

Telephone: 040 53271857
+ E-Mail: board@newpipe-ev.de +

+

Responsible for Content +

+

+ Thjorven Rubach
+ Location: Weberstraße 14
+ 22083 Hamburg +

+

+ Consumer arbitration board: +

+

+ We are not willing or obliged to participate in dispute resolution proceedings in front of a consumer arbitration board. +

+
+
+

+ Angaben gemäß § 5 TMG +

+

+ NewPipe e. V.
+ Sitz: Weberstraße 14
+ c/o Thjorven Rubach
+ 22083 Hamburg +

+

+ Vereinsregister: 25263
+ Registergericht: Hamburg +

+

Vertreten durch:
+ Thjorven Rubach
+ Fabio Giovanazzi
+ Christian Schabesberger

+

+ Kontakt +

+

Telefon: 040 53271857
+ E-Mail: board@newpipe-ev.de +

+

Redaktionell verantwortlich +

+

+ Thjorven Rubach
+ Adresse: Weberstraße 14
+ 22083 Hamburg +

+

+ Verbraucherschlichtungsstelle: +

+

+ Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..256015e --- /dev/null +++ b/index.html @@ -0,0 +1,187 @@ + + + + + NewPipe e. V. + + + + + +
+ + + + + +
+
+
+ +
+ + +
+
+

Who We Are

+
+ +

A non-profit association founded in Germany in 2022, mostly by TeamNewPipe members. Almost anyone can join us, the association is governed directly by the members: At least once per year a full assembly is held where the board presents the work happened since the last assembly and votes are cast on new decisions.

+
+ +
+
+ + +
+
+

What We Do

+
+
    +
  • Organize public informational events or congresses
  • +
  • Support projects – financially – which develop digital media technology
  • +
  • Make PR for projects in accordance with our association's goals
  • +
  • Provide digital infrastructure for projects
  • +
  • Or coordinate and help groups of volunteers who have the same goals
  • +
+
+ +
+
+ + +
+
+

We currently support these projects

+
+
    +
  • + +

    Hosting the website infrastructure and repository of TeamNewPipe.

    +
  • +
+

Maybe yours could be next?

+
+ +
+ +
+
+
+ + +
+ +
+ + + + + + + +
+ + + + + + + + + + diff --git a/join.html b/join.html new file mode 100644 index 0000000..d8df98d --- /dev/null +++ b/join.html @@ -0,0 +1,100 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Join our association!

+
+

+ Members of the association get voting rights in the plenum meetings, and bragging rights towards their friends (or foes). +

+

+ Please read through our About page to learn about us. Also read our statue linked there, to make sure we are a good fit for your patronage. +

+

+ Every natural person can become a member! If you are underage, we need a conformation of your legal guardians. The regular fee is 24 EUR per year, the reduced 12 EUR, but individual member fees can be requested. +

+

+ Every other entity can become a supporting member. Supporting members pay a yearly fee of 120 EUR, do not get active or passive vote rights and have to appoint a natural person to enact on their behalf. +

+

+ To sign up, fill out the signup form. If you choose SEPA mandate, also fill that out, and then mail these forms to the board. Hope to hear from you! +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/license.html b/license.html new file mode 100644 index 0000000..e88768d --- /dev/null +++ b/license.html @@ -0,0 +1,107 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Website Licensing

+
+

+ This document explains the licensing situation of the NewPipe e. V. website. +

+

+ Licensing of Contents +

+

+ The contents of this site, except for third-party resources or where noted otherwise, are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
+Content is defined as the intellectual property found in texts, images, and other media. The source code itself is licensed differently. Please see the section "Licensing of Source Code".
+You can fetch a copy from the "licenses" directory inside this repository as well as from the Creative Commons website.
+Authors who contribute media to this repository declare their agreement that their contribution will be licensed under the terms of CC-BY-SA 4.0. They further declare that they own the intellectual property, or have been authorized by the respective owner. +

+

+ Licensing of Source Code +

+

+ The source code (HTML, CSS and other scripting, markup or programming languages and the like) is licensed under the terms of the MIT license.
+You can fetch a copy from the "licenses" directory inside this repository as well as from the Open Source Initiative's homepage.
+Authors who contribute source code to this repository declare their agreement that their contribution will be licensed under the terms of the MIT license. They further declare that they own the intellectual property, or have been authorized by the respective owner. +

+

+

+

+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/onecolumn.html b/onecolumn.html new file mode 100644 index 0000000..8146e7c --- /dev/null +++ b/onecolumn.html @@ -0,0 +1,187 @@ + + + + + One Column - Halcyonic by HTML5 UP + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

One Column

+

A generic one column layout

+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam metus, congue + vel suscipit ut, dignissim non risus. Vestibulum ante est, fringilla nec placerat + eu, vestibulum vitae diam. Integer eget egestas eros. Duis enim erat, mollis quis + lacinia eget, blandit nec ipsum. Donec vitae turpis ipsum. Aliquam mauris libero, + sagittis in eleifend at, mattis imperdiet velit. Donec urna risus, rutrum molestie + varius ac, lacinia sit amet augue. Nam ultrices elementum eros. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+
+

test2

+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/posts/2022-11-05_founded.html b/posts/2022-11-05_founded.html new file mode 100644 index 0000000..1de0f49 --- /dev/null +++ b/posts/2022-11-05_founded.html @@ -0,0 +1,105 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+ +
+ + +
+
+

We are founded!

+

05.11.2022

+
+

+ This is a small post mortem of our association meeting. We did not sleep much and actually came up with a statue, a fee regulation, invited enough members to have a founding meeting and found time to eat together. All in the span of two days. Crazy. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/posts/2023-07-13_1st_board_meeting.html b/posts/2023-07-13_1st_board_meeting.html new file mode 100644 index 0000000..d6aa171 --- /dev/null +++ b/posts/2023-07-13_1st_board_meeting.html @@ -0,0 +1,111 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+ +
+ + +
+
+

1st board meeting

+

13.07.2023

+
+

+ Today we had our first board meeting. The full protocol can be found here. +

+

+ This meeting was mostly a recap of what got done. The bank account was created at the GLS, a medium-sized server was bought and the newpipe-ev.de domain. Also a backup space at hetzner. Also a mailbox email was created to get infrastructure relevant e-mail to a second mail provider. +

+

+ Membership collecting and logo decisions were postponed to a later date. The idea to support the NewPipe rewrite was suggested, e.g. paying a student during their semester. An announcement regarding the e.V. should be done as soon as a website is there. There was an attempt to reach Wolf/Rossman with no reply. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/posts/2023-12-18_pseudonyms.html b/posts/2023-12-18_pseudonyms.html new file mode 100644 index 0000000..fffc225 --- /dev/null +++ b/posts/2023-12-18_pseudonyms.html @@ -0,0 +1,108 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+ +
+ + +
+
+

Pseudonyms

+

18.12.2023

+
+

+ Some members have reached out to us about pseudonyms. They do not want their actual name to appear on the internet in situations like a meeting protocol or when we mention them on this website. We understand this concern and came up with a solution! +

+

+ We added a field to the official sign up form (which we send to all existing members) to add a wanted pseudonym. Then we can add this to our management system. This way, we know which member is behind a pseudonym and no one can enter a meeting with a new pseudonym and claim to be a member of our association. And we can use the pseudonyms in all public situations. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/posts/2023-12-19_1st_plenum_2nd_board_meeting.html b/posts/2023-12-19_1st_plenum_2nd_board_meeting.html new file mode 100644 index 0000000..16a0f02 --- /dev/null +++ b/posts/2023-12-19_1st_plenum_2nd_board_meeting.html @@ -0,0 +1,111 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+ +
+ + +
+
+

1st plenum, 2nd board meeting

+

19.12.2023

+
+

+ Today we had our second board and the first plenum meeting. The full protocol can be found here and here. +

+

+ In the board meeting, the conversion from donation currency was discussed. This was changed from allowing all currencies supported by liberapay to just EUR to make fees more transparent. Also it was decided to setup a temporary e-mail as well as website. The decision about pseudonyms was ratified. This also meant a change in privacy policy which needs to be acknowledged by the plenum. +

+

+ In the plenum a topic about releasing protocols quicker was discussed. Then the results of a poll about potential logos were presented, and the decision made to make a new hybrid from the highest voted logo and see how the members like that approach. The privacy policy change and pseudonyms were presented. And a vote to offer allowing to use the NewPipe e. V. server to deploy NewPipe's website was done, as well as starting the legal work on offering someone to work on the rewrite +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/privacy.html b/privacy.html new file mode 100644 index 0000000..c5c9d3d --- /dev/null +++ b/privacy.html @@ -0,0 +1,108 @@ + + + + + NewPipe e.V. + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Privacy policy

+
+

Data collection on this website

+

+ We do not collect any personal data of visitors of the NewPipe e. V. website. We do not install cookies on your system, and we do not track our users. Personal data such as the IP address are only processed for the purpose of serving the pages by our webserver software, and are deleted from the memory immediately after the page has been sent to the user. +

+

Server logs

+

+To have a minimum of control in scenarios where our website is abused, for example denial-of-service attacks, we configured our webserver to create a so-called acces log. This log file contains a list of all requests made to this server, each request in a separate line.
+The logged lines contain the following information: +

    +
  • the IP address that was used to make the request
  • +
  • a timestamp
  • +
  • the URL
  • +
  • the HTTP status code
  • +
  • the user agent the user‘s browser sends automatically
  • +
+We need to keep logs of the IP addresses sending requests to our server. As IP addresses are considered personal data and we respect the privacy of our users, we only keep enough of the IP address to be able to able to react to abuse (e.g., DoS and other attacks).
+We calculate prefixes of the IP addresses to anonymize them as follows:
+
    +
  • For IPv4 addresses, we remove the last two bytes to anonymize them. For example, an IP address such as
    12.34.56.78
    would be logged as
    12.34.0.0.
  • +
  • For IPv6 addresses, we remove all bytes but the first two. For example, an IP address such as
    2001:db8:85a3:8d3:1319:8a2e:370:7344
    would be logged as
    2001:db8:0:0:0:0:0:0
     (short 
    2001:0db8::
    ).
  • +
+We can not identify users from combinations of the other data. Therefore, we consider our log anonymized. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + diff --git a/threecolumn.html b/threecolumn.html new file mode 100644 index 0000000..9e26fd7 --- /dev/null +++ b/threecolumn.html @@ -0,0 +1,232 @@ + + + + + Three Column - Halcyonic by HTML5 UP + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Ipsum Dolor

+
+

+ Vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat. +

+ +
+
+
+

Magna Phasellus

+
+ +
+
+
+ + +
+
+

Three Column

+

A generic three column layout

+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam metus, congue + vel suscipit ut, dignissim non risus. Vestibulum ante est, fringilla nec placerat + eu, vestibulum vitae diam. Integer eget egestas eros. Duis enim erat, mollis quis + lacinia eget, blandit nec ipsum. Donec vitae turpis ipsum. Aliquam mauris libero, + sagittis in eleifend at, mattis imperdiet velit. Donec urna risus, rutrum molestie + varius ac, lacinia sit amet augue. Nam ultrices elementum eros. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+
+ +
+
+ + +
+
+

Magna Phasellus

+
+ +
+
+
+

Ipsum Dolor

+
+

+ Vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat. +

+ +
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/twocolumn1.html b/twocolumn1.html new file mode 100644 index 0000000..d1d6506 --- /dev/null +++ b/twocolumn1.html @@ -0,0 +1,219 @@ + + + + + Two Column 1 - Halcyonic by HTML5 UP + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Two Column #1

+

A generic two column layout

+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam metus, congue + vel suscipit ut, dignissim non risus. Vestibulum ante est, fringilla nec placerat + eu, vestibulum vitae diam. Integer eget egestas eros. Duis enim erat, mollis quis + lacinia eget, blandit nec ipsum. Donec vitae turpis ipsum. Aliquam mauris libero, + sagittis in eleifend at, mattis imperdiet velit. Donec urna risus, rutrum molestie + varius ac, lacinia sit amet augue. Nam ultrices elementum eros. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+
+ +
+
+ + +
+
+

Magna Phasellus

+
+ +
+
+
+

Ipsum Dolor

+
+

+ Vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat. +

+ +
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/twocolumn2.html b/twocolumn2.html new file mode 100644 index 0000000..7632f44 --- /dev/null +++ b/twocolumn2.html @@ -0,0 +1,219 @@ + + + + + Two Column 2 - Halcyonic by HTML5 UP + + + + + +
+ + + + + +
+
+
+
+ + +
+
+

Magna Phasellus

+
+ +
+
+
+

Ipsum Dolor

+
+

+ Vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat. +

+ +
+ +
+
+ + +
+
+

Two Column #2

+

Another generic two column layout

+
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quam metus, congue + vel suscipit ut, dignissim non risus. Vestibulum ante est, fringilla nec placerat + eu, vestibulum vitae diam. Integer eget egestas eros. Duis enim erat, mollis quis + lacinia eget, blandit nec ipsum. Donec vitae turpis ipsum. Aliquam mauris libero, + sagittis in eleifend at, mattis imperdiet velit. Donec urna risus, rutrum molestie + varius ac, lacinia sit amet augue. Nam ultrices elementum eros. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+

+ Sed faucibus viverra ligula, non varius magna semper vitae. Donec eu justo ut ipsum + hendrerit congue nec eu risus. Cum sociis natoque penatibus et magnis dis parturient + montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + elit. Suspendisse fermentum adipiscing nisi, a tempor libero malesuada at. Morbi + lacinia dui adipiscing risus eleifend tincidunt. Proin eu mauris eu tellus eleifend + hendrerit. +

+

+ Mauris sit amet tellus urna. In facilisis, tortor vitae ultricies egestas, odio + mi rhoncus arcu, quis euismod felis felis et velit. Mauris varius consectetur erat + egestas tempus. Cras convallis odio sit amet risus convallis porttitor. Integer + vehicula fermentum ligula at pretium. Suspendisse semper iaculis eros, eu aliquam + justo imperdiet vel. Proin nec dictum mi. Duis commodo enim non tellus interdum + iaculis. Phasellus ultrices diam sit amet orci lacinia sed consequat dui auctor. +

+
+ +
+
+
+
+ + + + + + + +
+ + + + + + + + + + \ No newline at end of file