├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE.md └── workflows │ └── ci.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── Procfile ├── README.md ├── app.json ├── app.py ├── docker-compose.yml ├── example.env ├── gateway └── __init__.py ├── requirements.txt ├── static ├── css │ ├── app.css │ └── app.css.map ├── fonts │ ├── bt-mono │ │ ├── bt-mono-Bold.eot │ │ ├── bt-mono-Bold.svg │ │ ├── bt-mono-Bold.woff │ │ ├── bt-mono-Bold.woff2 │ │ ├── bt-mono-Medium.eot │ │ ├── bt-mono-Medium.svg │ │ ├── bt-mono-Medium.woff │ │ ├── bt-mono-Medium.woff2 │ │ ├── bt-mono-Regular.eot │ │ ├── bt-mono-Regular.svg │ │ ├── bt-mono-Regular.woff │ │ └── bt-mono-Regular.woff2 │ └── open-sans │ │ ├── OpenSans-Bold-webfont.eot │ │ ├── OpenSans-Bold-webfont.svg │ │ ├── OpenSans-Bold-webfont.ttf │ │ ├── OpenSans-Bold-webfont.woff │ │ ├── OpenSans-Light-webfont.eot │ │ ├── OpenSans-Light-webfont.svg │ │ ├── OpenSans-Light-webfont.ttf │ │ ├── OpenSans-Light-webfont.woff │ │ ├── OpenSans-Regular-webfont.eot │ │ ├── OpenSans-Regular-webfont.svg │ │ ├── OpenSans-Regular-webfont.ttf │ │ ├── OpenSans-Regular-webfont.woff │ │ ├── OpenSans-Semibold-webfont.eot │ │ ├── OpenSans-Semibold-webfont.svg │ │ ├── OpenSans-Semibold-webfont.ttf │ │ └── OpenSans-Semibold-webfont.woff ├── images │ ├── bt-drop-in-placeholder.png │ ├── cards │ │ ├── amex.svg │ │ ├── discover.svg │ │ ├── mastercard.svg │ │ └── visa.svg │ ├── check.svg │ ├── fail.svg │ ├── favicon.png │ ├── paypal-demo.svg │ ├── paypal.svg │ ├── pseudoshop.svg │ └── success.svg └── javascript │ └── demo.js ├── templates ├── checkouts │ ├── new.html │ └── show.html └── layout.html ├── test_app.py └── test_helpers.py /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @braintree/team-sdk-server 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### General information 2 | 3 | * Environment: 4 | * Language, language version, and OS: 5 | 6 | ### Issue description 7 | 8 | 9 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Braintree Flask Example 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | permissions: 12 | contents: read 13 | 14 | jobs: 15 | test: 16 | runs-on: ubuntu-20.04 17 | strategy: 18 | matrix: 19 | python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] 20 | 21 | steps: 22 | - uses: actions/checkout@v3 23 | - name: Set up Python 24 | uses: actions/setup-python@v4 25 | with: 26 | python-version: ${{ matrix.python-version }} 27 | cache: "pip" 28 | - name: Setup Test Env 29 | run: pip install -r requirements.txt 30 | - name: Run tests 31 | env: 32 | BT_ENVIRONMENT: ${{ secrets.BT_ENVIRONMENT }} 33 | BT_MERCHANT_ID: ${{ secrets.BT_MERCHANT_ID }} 34 | BT_PUBLIC_KEY: ${{ secrets.BT_PUBLIC_KEY }} 35 | BT_PRIVATE_KEY: ${{ secrets.BT_PRIVATE_KEY }} 36 | APP_SECRET_KEY: ${{ secrets.APP_SECRET_KEY }} 37 | run: python test_app.py 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Configurations 9 | *.cfg 10 | .env 11 | 12 | # Distribution / packaging 13 | .Python 14 | env/ 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | venv/ 30 | 31 | 32 | # PyInstaller 33 | # Usually these files are written by a python script from a template 34 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 35 | *.manifest 36 | *.spec 37 | 38 | # Installer logs 39 | pip-log.txt 40 | pip-delete-this-directory.txt 41 | 42 | # Unit test / coverage reports 43 | htmlcov/ 44 | .tox/ 45 | .coverage 46 | .coverage.* 47 | .cache 48 | nosetests.xml 49 | coverage.xml 50 | *,cover 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | 59 | # Sphinx documentation 60 | docs/_build/ 61 | 62 | # PyBuilder 63 | target/ 64 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.5.3 2 | 3 | RUN apt-get update && apt-get install -y build-essential 4 | 5 | ENV APP_HOME /braintree_flask_example 6 | RUN mkdir $APP_HOME 7 | WORKDIR $APP_HOME 8 | 9 | ADD requirements.txt $APP_HOME 10 | RUN pip install -r requirements.txt 11 | 12 | ADD . $APP_HOME 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Braintree 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn app:app --log-file - 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Braintree Flask Example 2 | 3 | An example Braintree integration for python in the Flask framework. 4 | 5 | ## Setup Instructions 6 | 7 | 1. Install requirements: 8 | ```sh 9 | pip3 install -r requirements.txt 10 | ``` 11 | 12 | 2. Copy the contents of `example.env` into a new file named `.env` and fill in your Braintree API credentials. Credentials can be found by navigating to Account > My User > View Authorizations in the Braintree Control Panel. Full instructions can be [found on our support site](https://articles.braintreepayments.com/control-panel/important-gateway-credentials#api-credentials). 13 | 14 | 3. Start server: 15 | ```sh 16 | python3 app.py 17 | ``` 18 | 19 | By default, this runs the app on port `4567`. You can configure the port by setting the environmental variable `PORT`. 20 | 21 | ## Running tests 22 | 23 | Unit tests do not make API calls to Braintree and do not require Braintree credentials. You can run this project's unit tests by calling `python test_app.py` on the command line. 24 | 25 | ## Testing Transactions 26 | 27 | Sandbox transactions must be made with [sample credit card numbers](https://developers.braintreepayments.com/reference/general/testing/python#credit-card-numbers), and the response of a `Transaction.sale()` call is dependent on the [amount of the transaction](https://developers.braintreepayments.com/reference/general/testing/python#test-amounts). 28 | 29 | ## Pro Tips 30 | 31 | - The `example.env` contains an `APP_SECRET_KEY` setting. Even in development you should [generate your own custom secret key for your app](https://flask.palletsprojects.com/en/1.0.x/quickstart/#sessions). 32 | 33 | ## Help 34 | 35 | * Found a bug? Have a suggestion for improvement? Want to tell us we're awesome? [Submit an issue](https://github.com/braintree/braintree_flask_example/issues) 36 | * Trouble with your integration? Contact [Braintree Support](https://support.braintreepayments.com/) / support@braintreepayments.com 37 | * Want to contribute? [Submit a pull request](https://help.github.com/articles/creating-a-pull-request) 38 | 39 | ## Disclaimer 40 | 41 | This code is provided as is and is only intended to be used for illustration purposes. This code is not production-ready and is not meant to be used in a production environment. This repository is to be used as a tool to help merchants learn how to integrate with Braintree. Any use of this repository or any of its code in a production environment is highly discouraged. 42 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Braintree Flask Example", 3 | "description": "An example Braintree integration for Flask", 4 | "keywords": ["braintree", "python", "flask"], 5 | "website": "https://www.braintreepayments.com", 6 | "repository": "https://github.com/braintree/braintree_flask_example", 7 | "logo": "https://avatars1.githubusercontent.com/u/3453", 8 | "success_url": "/", 9 | "env": { 10 | "BT_ENVIRONMENT": { 11 | "description": "Run against Braintree sandbox environment", 12 | "required": true, 13 | "value": "sandbox" 14 | }, 15 | "BT_MERCHANT_ID": { 16 | "description": "Your Braintree Merchant ID", 17 | "required": true 18 | }, 19 | "BT_PUBLIC_KEY": { 20 | "description": "Your Braintree Public Key", 21 | "required": true 22 | }, 23 | "BT_PRIVATE_KEY": { 24 | "description": "Your Braintree Private Key", 25 | "required": true 26 | }, 27 | "APP_SECRET_KEY": { 28 | "description": "A unique secret key; a long, random set of characters", 29 | "required": true, 30 | "generator": "secret" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, redirect, url_for, render_template, request, flash 2 | 3 | import os 4 | from os.path import join, dirname 5 | from dotenv import load_dotenv 6 | import braintree 7 | from gateway import generate_client_token, transact, find_transaction 8 | 9 | load_dotenv() 10 | 11 | app = Flask(__name__) 12 | app.secret_key = os.environ.get('APP_SECRET_KEY') 13 | 14 | PORT = int(os.environ.get('PORT', 4567)) 15 | 16 | TRANSACTION_SUCCESS_STATUSES = [ 17 | braintree.Transaction.Status.Authorized, 18 | braintree.Transaction.Status.Authorizing, 19 | braintree.Transaction.Status.Settled, 20 | braintree.Transaction.Status.SettlementConfirmed, 21 | braintree.Transaction.Status.SettlementPending, 22 | braintree.Transaction.Status.Settling, 23 | braintree.Transaction.Status.SubmittedForSettlement 24 | ] 25 | 26 | @app.route('/', methods=['GET']) 27 | def index(): 28 | return redirect(url_for('new_checkout')) 29 | 30 | @app.route('/checkouts/new', methods=['GET']) 31 | def new_checkout(): 32 | client_token = generate_client_token() 33 | return render_template('checkouts/new.html', client_token=client_token) 34 | 35 | @app.route('/checkouts/', methods=['GET']) 36 | def show_checkout(transaction_id): 37 | transaction = find_transaction(transaction_id) 38 | result = {} 39 | if transaction.status in TRANSACTION_SUCCESS_STATUSES: 40 | result = { 41 | 'header': 'Sweet Success!', 42 | 'icon': 'success', 43 | 'message': 'Your test transaction has been successfully processed. See the Braintree API response and try again.' 44 | } 45 | else: 46 | result = { 47 | 'header': 'Transaction Failed', 48 | 'icon': 'fail', 49 | 'message': 'Your test transaction has a status of ' + transaction.status + '. See the Braintree API response and try again.' 50 | } 51 | 52 | return render_template('checkouts/show.html', transaction=transaction, result=result) 53 | 54 | @app.route('/checkouts', methods=['POST']) 55 | def create_checkout(): 56 | result = transact({ 57 | 'amount': request.form['amount'], 58 | 'payment_method_nonce': request.form['payment_method_nonce'], 59 | 'options': { 60 | "submit_for_settlement": True 61 | } 62 | }) 63 | 64 | if result.is_success or result.transaction: 65 | return redirect(url_for('show_checkout',transaction_id=result.transaction.id)) 66 | else: 67 | for x in result.errors.deep_errors: flash('Error: %s: %s' % (x.code, x.message)) 68 | return redirect(url_for('new_checkout')) 69 | 70 | if __name__ == '__main__': 71 | app.run(host='0.0.0.0', port=PORT, debug=True) 72 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | services: 3 | web: 4 | build: . 5 | command: python app.py 6 | ports: 7 | - "4567:4567" 8 | volumes: 9 | - .:/braintree_flask_example 10 | -------------------------------------------------------------------------------- /example.env: -------------------------------------------------------------------------------- 1 | BT_ENVIRONMENT='sandbox' 2 | BT_MERCHANT_ID='your braintree merchant id' 3 | BT_PUBLIC_KEY='your braintree public key' 4 | BT_PRIVATE_KEY='your braintree private key' 5 | APP_SECRET_KEY='your unique secret key; a long, random set of characters' 6 | -------------------------------------------------------------------------------- /gateway/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | from dotenv import load_dotenv 3 | import braintree 4 | 5 | gateway = braintree.BraintreeGateway( 6 | braintree.Configuration( 7 | environment=os.environ.get('BT_ENVIRONMENT'), 8 | merchant_id=os.environ.get('BT_MERCHANT_ID'), 9 | public_key=os.environ.get('BT_PUBLIC_KEY'), 10 | private_key=os.environ.get('BT_PRIVATE_KEY') 11 | ) 12 | ) 13 | 14 | def generate_client_token(): 15 | return gateway.client_token.generate() 16 | 17 | def transact(options): 18 | return gateway.transaction.sale(options) 19 | 20 | def find_transaction(id): 21 | return gateway.transaction.find(id) 22 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.0.1 2 | braintree>=4.0.0 3 | MarkupSafe>=2.0 4 | mock>=1.3.0 5 | # As of v2.1.0, werkzeug removed `as_tupple`, Flask wraps this, so we need to pin this version until we can update Flask 6 | Werkzeug==2.0.3 7 | # Jinja 3.1 has breaking changes TO-DO: find proper fix for later versions 8 | Jinja2<3.1,>=3.0 9 | itsdangerous>=2.0 10 | requests<3.0,>=0.11.1 11 | pbr>=0.11 12 | six>=1.7 13 | python-dotenv==0.12.0 14 | gunicorn==20.0.4 15 | -------------------------------------------------------------------------------- /static/css/app.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */ 2 | 3 | html { 4 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; 5 | -ms-text-size-adjust: 100%; 6 | -webkit-text-size-adjust: 100%; 7 | } 8 | 9 | body { 10 | margin: 0; 11 | } 12 | 13 | article, 14 | aside, 15 | details, 16 | figcaption, 17 | figure, 18 | footer, 19 | header, 20 | hgroup, 21 | main, 22 | menu, 23 | nav, 24 | section, 25 | summary { 26 | display: block; 27 | } 28 | 29 | audio, 30 | canvas, 31 | progress, 32 | video { 33 | display: inline-block; 34 | vertical-align: baseline; 35 | } 36 | 37 | audio:not([controls]) { 38 | display: none; 39 | height: 0; 40 | } 41 | 42 | [hidden], 43 | template { 44 | display: none; 45 | } 46 | 47 | a { 48 | background-color: transparent; 49 | } 50 | 51 | a:active, 52 | a:hover { 53 | outline: 0; 54 | } 55 | 56 | abbr[title] { 57 | border-bottom: 1px dotted; 58 | } 59 | 60 | b, 61 | strong { 62 | font-weight: bold; 63 | } 64 | 65 | dfn { 66 | font-style: italic; 67 | } 68 | 69 | h1 { 70 | font-size: 2em; 71 | margin: 0.67em 0; 72 | } 73 | 74 | mark { 75 | background: #ff0; 76 | color: #000; 77 | } 78 | 79 | small { 80 | font-size: 80%; 81 | } 82 | 83 | sub, 84 | sup { 85 | font-size: 75%; 86 | line-height: 0; 87 | position: relative; 88 | vertical-align: baseline; 89 | } 90 | 91 | sup { 92 | top: -0.5em; 93 | } 94 | 95 | sub { 96 | bottom: -0.25em; 97 | } 98 | 99 | img { 100 | border: 0; 101 | } 102 | 103 | svg:not(:root) { 104 | overflow: hidden; 105 | } 106 | 107 | figure { 108 | margin: 1em 40px; 109 | } 110 | 111 | hr { 112 | -moz-box-sizing: content-box; 113 | -webkit-box-sizing: content-box; 114 | box-sizing: content-box; 115 | height: 0; 116 | } 117 | 118 | pre { 119 | overflow: auto; 120 | } 121 | 122 | code, 123 | kbd, 124 | pre, 125 | samp { 126 | font-family: monospace, monospace; 127 | font-size: 1em; 128 | } 129 | 130 | button, 131 | input, 132 | optgroup, 133 | select, 134 | textarea { 135 | color: inherit; 136 | font: inherit; 137 | margin: 0; 138 | } 139 | 140 | button { 141 | overflow: visible; 142 | } 143 | 144 | button, 145 | select { 146 | text-transform: none; 147 | } 148 | 149 | button, 150 | html input[type="button"], 151 | input[type="reset"], 152 | input[type="submit"] { 153 | -webkit-appearance: button; 154 | cursor: pointer; 155 | } 156 | 157 | button[disabled], 158 | html input[disabled] { 159 | cursor: default; 160 | } 161 | 162 | button::-moz-focus-inner, 163 | input::-moz-focus-inner { 164 | border: 0; 165 | padding: 0; 166 | } 167 | 168 | input { 169 | line-height: normal; 170 | } 171 | 172 | input[type="checkbox"], 173 | input[type="radio"] { 174 | -webkit-box-sizing: border-box; 175 | -moz-box-sizing: border-box; 176 | box-sizing: border-box; 177 | padding: 0; 178 | } 179 | 180 | input[type="number"]::-webkit-inner-spin-button, 181 | input[type="number"]::-webkit-outer-spin-button { 182 | height: auto; 183 | } 184 | 185 | input[type="search"] { 186 | -webkit-appearance: textfield; 187 | -moz-box-sizing: content-box; 188 | -webkit-box-sizing: content-box; 189 | box-sizing: content-box; 190 | } 191 | 192 | input[type="search"]::-webkit-search-cancel-button, 193 | input[type="search"]::-webkit-search-decoration { 194 | -webkit-appearance: none; 195 | } 196 | 197 | fieldset { 198 | border: 1px solid #c0c0c0; 199 | margin: 0 2px; 200 | padding: 0.35em 0.625em 0.75em; 201 | } 202 | 203 | legend { 204 | border: 0; 205 | padding: 0; 206 | } 207 | 208 | textarea { 209 | overflow: auto; 210 | } 211 | 212 | optgroup { 213 | font-weight: bold; 214 | } 215 | 216 | table { 217 | border-collapse: collapse; 218 | border-spacing: 0; 219 | } 220 | 221 | td, 222 | th { 223 | padding: 0; 224 | } 225 | 226 | .clearfix:after, 227 | .content:after, 228 | .row:after { 229 | content: ""; 230 | display: table; 231 | clear: both; 232 | } 233 | 234 | .stage-wrapper { 235 | display: table; 236 | width: 100%; 237 | height: 100%; 238 | overflow: auto; 239 | } 240 | 241 | .stage { 242 | display: table-cell; 243 | vertical-align: middle; 244 | } 245 | 246 | .full { 247 | display: block; 248 | width: 100%; 249 | } 250 | 251 | .right { 252 | float: right; 253 | } 254 | 255 | .left { 256 | float: left; 257 | } 258 | 259 | .center { 260 | text-align: center; 261 | margin-left: auto; 262 | margin-right: auto; 263 | } 264 | 265 | .small { 266 | font-size: 14px; 267 | } 268 | 269 | .pseudo, 270 | .button span:after, 271 | aside.drawer header:before, 272 | aside.drawer article:before, 273 | aside.drawer article:after { 274 | content: ""; 275 | display: inline-block; 276 | height: 100%; 277 | left: 0px; 278 | position: absolute; 279 | top: 0px; 280 | width: 100%; 281 | } 282 | 283 | @font-face { 284 | font-family: 'Open Sans light'; 285 | src: url("../fonts/open-sans/OpenSans-Light-webfont.eot"); 286 | src: url("../fonts/open-sans/OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/open-sans/OpenSans-Light-webfont.woff") format("woff"), url("../fonts/open-sans/OpenSans-Light-webfont.ttf") format("truetype"), url("../fonts/open-sans/OpenSans-Light-webfont.svg#open_sansbold") format("svg"); 287 | font-weight: normal; 288 | font-style: normal; 289 | } 290 | 291 | @font-face { 292 | font-family: 'Open Sans regular'; 293 | src: url("../fonts/open-sans/OpenSans-Regular-webfont.eot"); 294 | src: url("../fonts/open-sans/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/open-sans/OpenSans-Regular-webfont.woff") format("woff"), url("../fonts/open-sans/OpenSans-Regular-webfont.ttf") format("truetype"), url("../fonts/open-sans/OpenSans-Regular-webfont.svg#open_sansregular") format("svg"); 295 | font-weight: normal; 296 | font-style: normal; 297 | } 298 | 299 | @font-face { 300 | font-family: 'Open Sans semibold'; 301 | src: url("../fonts/open-sans/OpenSans-Semibold-webfont.eot"); 302 | src: url("../fonts/open-sans/OpenSans-Semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/open-sans/OpenSans-Semibold-webfont.woff") format("woff"), url("../fonts/open-sans/OpenSans-Semibold-webfont.ttf") format("truetype"), url("../fonts/open-sans/OpenSans-Semibold-webfont.svg#open_sanssemibold") format("svg"); 303 | font-weight: normal; 304 | font-style: normal; 305 | } 306 | 307 | @font-face { 308 | font-family: 'Open Sans bold'; 309 | src: url("../fonts/open-sans/OpenSans-Bold-webfont.eot"); 310 | src: url("../fonts/open-sans/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/open-sans/OpenSans-Bold-webfont.woff") format("woff"), url("../fonts/open-sans/OpenSans-Bold-webfont.ttf") format("truetype"), url("../fonts/open-sans/OpenSans-Bold-webfont.svg#open_sansbold") format("svg"); 311 | font-weight: normal; 312 | font-style: normal; 313 | } 314 | 315 | @font-face { 316 | font-family: 'BT Mono'; 317 | src: url("../fonts/bt-mono/bt-mono-Regular.eot"); 318 | src: url("../fonts/bt-mono/bt-mono-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/bt-mono/bt-mono-Regular.woff2") format("woff2"), url("../fonts/bt-mono/bt-mono-Regular.woff") format("woff"), url("../fonts/bt-mono/bt-mono-Regular.ttf") format("truetype"), url("../fonts/bt-mono/bt-mono-Regular.svg#bt_monoregular") format("svg"); 319 | font-style: normal; 320 | font-weight: 400; 321 | } 322 | 323 | @font-face { 324 | font-family: 'BT Mono medium'; 325 | src: url("../fonts/bt-mono/bt-mono-Medium.eot"); 326 | src: url("../fonts/bt-mono/bt-mono-Medium.eot?#iefix") format("embedded-opentype"), url("../fonts/bt-mono/bt-mono-Medium.woff2") format("woff2"), url("../fonts/bt-mono/bt-mono-Medium.woff") format("woff"), url("../fonts/bt-mono/bt-mono-Medium.ttf") format("truetype"), url("../fonts/bt-mono/bt-mono-Medium.svg#bt_monobold") format("svg"); 327 | font-weight: 600; 328 | font-style: normal; 329 | } 330 | 331 | @font-face { 332 | font-family: 'BT Mono bold'; 333 | src: url("../fonts/bt-mono/bt-mono-Bold.eot"); 334 | src: url("../fonts/bt-mono/bt-mono-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/bt-mono/bt-mono-Bold.woff2") format("woff2"), url("../fonts/bt-mono/bt-mono-Bold.woff") format("woff"), url("../fonts/bt-mono/bt-mono-Bold.ttf") format("truetype"), url("../fonts/bt-mono/bt-mono-Bold.svg#bt_monobold") format("svg"); 335 | font-weight: 700; 336 | font-style: normal; 337 | } 338 | 339 | @-webkit-keyframes fadeIn { 340 | 0% { 341 | opacity: 0; 342 | } 343 | 100% { 344 | opacity: 1; 345 | } 346 | } 347 | 348 | @-moz-keyframes fadeIn { 349 | 0% { 350 | opacity: 0; 351 | } 352 | 100% { 353 | opacity: 1; 354 | } 355 | } 356 | 357 | @keyframes fadeIn { 358 | 0% { 359 | opacity: 0; 360 | } 361 | 100% { 362 | opacity: 1; 363 | } 364 | } 365 | 366 | @-webkit-keyframes fadeInUp { 367 | 0% { 368 | opacity: 0; 369 | transform: translateY(40px); 370 | } 371 | 100% { 372 | opacity: 1; 373 | transform: translateY(0px); 374 | } 375 | } 376 | 377 | @-moz-keyframes fadeInUp { 378 | 0% { 379 | opacity: 0; 380 | transform: translateY(40px); 381 | } 382 | 100% { 383 | opacity: 1; 384 | transform: translateY(0px); 385 | } 386 | } 387 | 388 | @keyframes fadeInUp { 389 | 0% { 390 | opacity: 0; 391 | transform: translateY(40px); 392 | } 393 | 100% { 394 | opacity: 1; 395 | transform: translateY(0px); 396 | } 397 | } 398 | 399 | @-webkit-keyframes fadeInDown { 400 | 0% { 401 | opacity: 0; 402 | transform: translateY(-30px); 403 | } 404 | 100% { 405 | opacity: 1; 406 | transform: translateY(0px); 407 | } 408 | } 409 | 410 | @-moz-keyframes fadeInDown { 411 | 0% { 412 | opacity: 0; 413 | transform: translateY(-30px); 414 | } 415 | 100% { 416 | opacity: 1; 417 | transform: translateY(0px); 418 | } 419 | } 420 | 421 | @keyframes fadeInDown { 422 | 0% { 423 | opacity: 0; 424 | transform: translateY(-30px); 425 | } 426 | 100% { 427 | opacity: 1; 428 | transform: translateY(0px); 429 | } 430 | } 431 | 432 | @-webkit-keyframes fadeInLeft { 433 | 0% { 434 | opacity: 0; 435 | transform: translateX(60px); 436 | } 437 | 100% { 438 | opacity: 1; 439 | transform: translateX(0px); 440 | } 441 | } 442 | 443 | @-moz-keyframes fadeInLeft { 444 | 0% { 445 | opacity: 0; 446 | transform: translateX(60px); 447 | } 448 | 100% { 449 | opacity: 1; 450 | transform: translateX(0px); 451 | } 452 | } 453 | 454 | @keyframes fadeInLeft { 455 | 0% { 456 | opacity: 0; 457 | transform: translateX(60px); 458 | } 459 | 100% { 460 | opacity: 1; 461 | transform: translateX(0px); 462 | } 463 | } 464 | 465 | @-webkit-keyframes fadeInRight { 466 | 0% { 467 | opacity: 0; 468 | transform: translateX(-60px); 469 | } 470 | 100% { 471 | opacity: 1; 472 | transform: translateX(0px); 473 | } 474 | } 475 | 476 | @-moz-keyframes fadeInRight { 477 | 0% { 478 | opacity: 0; 479 | transform: translateX(-60px); 480 | } 481 | 100% { 482 | opacity: 1; 483 | transform: translateX(0px); 484 | } 485 | } 486 | 487 | @keyframes fadeInRight { 488 | 0% { 489 | opacity: 0; 490 | transform: translateX(-60px); 491 | } 492 | 100% { 493 | opacity: 1; 494 | transform: translateX(0px); 495 | } 496 | } 497 | 498 | @-webkit-keyframes fadeOutDown { 499 | 0% { 500 | opacity: 1; 501 | transform: translateY(0px); 502 | } 503 | 100% { 504 | opacity: 0; 505 | transform: translateY(40px); 506 | } 507 | } 508 | 509 | @-moz-keyframes fadeOutDown { 510 | 0% { 511 | opacity: 1; 512 | transform: translateY(0px); 513 | } 514 | 100% { 515 | opacity: 0; 516 | transform: translateY(40px); 517 | } 518 | } 519 | 520 | @keyframes fadeOutDown { 521 | 0% { 522 | opacity: 1; 523 | transform: translateY(0px); 524 | } 525 | 100% { 526 | opacity: 0; 527 | transform: translateY(40px); 528 | } 529 | } 530 | 531 | @-webkit-keyframes fadeOutRight { 532 | 0% { 533 | opacity: 1; 534 | transform: translateX(0px); 535 | } 536 | 100% { 537 | opacity: 0; 538 | transform: translateX(40px); 539 | } 540 | } 541 | 542 | @-moz-keyframes fadeOutRight { 543 | 0% { 544 | opacity: 1; 545 | transform: translateX(0px); 546 | } 547 | 100% { 548 | opacity: 0; 549 | transform: translateX(40px); 550 | } 551 | } 552 | 553 | @keyframes fadeOutRight { 554 | 0% { 555 | opacity: 1; 556 | transform: translateX(0px); 557 | } 558 | 100% { 559 | opacity: 0; 560 | transform: translateX(40px); 561 | } 562 | } 563 | 564 | @-webkit-keyframes slideInUp { 565 | 0% { 566 | transform: translateY(100%); 567 | } 568 | 100% { 569 | transform: translateY(0%); 570 | } 571 | } 572 | 573 | @-moz-keyframes slideInUp { 574 | 0% { 575 | transform: translateY(100%); 576 | } 577 | 100% { 578 | transform: translateY(0%); 579 | } 580 | } 581 | 582 | @keyframes slideInUp { 583 | 0% { 584 | transform: translateY(100%); 585 | } 586 | 100% { 587 | transform: translateY(0%); 588 | } 589 | } 590 | 591 | @-webkit-keyframes slideLeft { 592 | 0% { 593 | -webkit-transform: translateX(100%); 594 | } 595 | 100% { 596 | -webkit-transform: translateX(0%); 597 | } 598 | } 599 | 600 | @-moz-keyframes slideLeft { 601 | 0% { 602 | -moz-transform: translateX(100%); 603 | } 604 | 100% { 605 | -moz-transform: translateX(0%); 606 | } 607 | } 608 | 609 | @keyframes slideLeft { 610 | 0% { 611 | -webkit-transform: translateX(100%); 612 | -moz-transform: translateX(100%); 613 | -ms-transform: translateX(100%); 614 | -o-transform: translateX(100%); 615 | transform: translateX(100%); 616 | } 617 | 100% { 618 | -webkit-transform: translateX(0%); 619 | -moz-transform: translateX(0%); 620 | -ms-transform: translateX(0%); 621 | -o-transform: translateX(0%); 622 | transform: translateX(0%); 623 | } 624 | } 625 | 626 | @-webkit-keyframes slideRight { 627 | 0% { 628 | -webkit-transform: translateX(0%); 629 | } 630 | 100% { 631 | -webkit-transform: translateX(100%); 632 | } 633 | } 634 | 635 | @-moz-keyframes slideRight { 636 | 0% { 637 | -moz-transform: translateX(0%); 638 | } 639 | 100% { 640 | -moz-transform: translateX(100%); 641 | } 642 | } 643 | 644 | @keyframes slideRight { 645 | 0% { 646 | -webkit-transform: translateX(0%); 647 | -moz-transform: translateX(0%); 648 | -ms-transform: translateX(0%); 649 | -o-transform: translateX(0%); 650 | transform: translateX(0%); 651 | } 652 | 100% { 653 | -webkit-transform: translateX(100%); 654 | -moz-transform: translateX(100%); 655 | -ms-transform: translateX(100%); 656 | -o-transform: translateX(100%); 657 | transform: translateX(100%); 658 | } 659 | } 660 | 661 | @-webkit-keyframes pullLeftSmall { 662 | 0% { 663 | -webkit-transform: translateX(0vw); 664 | } 665 | 100% { 666 | -webkit-transform: translateX(-16.666vw); 667 | } 668 | } 669 | 670 | @-moz-keyframes pullLeftSmall { 671 | 0% { 672 | -moz-transform: translateX(0vw); 673 | } 674 | 100% { 675 | -moz-transform: translateX(-16.666vw); 676 | } 677 | } 678 | 679 | @keyframes pullLeftSmall { 680 | 0% { 681 | -webkit-transform: translateX(0vw); 682 | -moz-transform: translateX(0vw); 683 | -ms-transform: translateX(0vw); 684 | -o-transform: translateX(0vw); 685 | transform: translateX(0vw); 686 | } 687 | 100% { 688 | -webkit-transform: translateX(-16.666vw); 689 | -moz-transform: translateX(-16.666vw); 690 | -ms-transform: translateX(-16.666vw); 691 | -o-transform: translateX(-16.666vw); 692 | transform: translateX(-16.666vw); 693 | } 694 | } 695 | 696 | @-webkit-keyframes pullLeftLarge { 697 | 0% { 698 | -webkit-transform: translateX(0vw); 699 | } 700 | 100% { 701 | -webkit-transform: translateX(-33.333vw); 702 | } 703 | } 704 | 705 | @-moz-keyframes pullLeftLarge { 706 | 0% { 707 | -moz-transform: translateX(0vw); 708 | } 709 | 100% { 710 | -moz-transform: translateX(-33.333vw); 711 | } 712 | } 713 | 714 | @keyframes pullLeftLarge { 715 | 0% { 716 | -webkit-transform: translateX(0vw); 717 | -moz-transform: translateX(0vw); 718 | -ms-transform: translateX(0vw); 719 | -o-transform: translateX(0vw); 720 | transform: translateX(0vw); 721 | } 722 | 100% { 723 | -webkit-transform: translateX(-33.333vw); 724 | -moz-transform: translateX(-33.333vw); 725 | -ms-transform: translateX(-33.333vw); 726 | -o-transform: translateX(-33.333vw); 727 | transform: translateX(-33.333vw); 728 | } 729 | } 730 | 731 | @-webkit-keyframes yankLeft { 732 | 0% { 733 | -webkit-transform: translateX(0px); 734 | } 735 | 40% { 736 | -webkit-transform: translateX(-14px); 737 | } 738 | 70% { 739 | -webkit-transform: translateX(4px); 740 | } 741 | 100% { 742 | -webkit-transform: translateX(0px); 743 | } 744 | } 745 | 746 | @-moz-keyframes yankLeft { 747 | 0% { 748 | -moz-transform: translateX(0px); 749 | } 750 | 40% { 751 | -moz-transform: translateX(-14px); 752 | } 753 | 70% { 754 | -moz-transform: translateX(4px); 755 | } 756 | 100% { 757 | -moz-transform: translateX(0px); 758 | } 759 | } 760 | 761 | @keyframes yankLeft { 762 | 0% { 763 | -webkit-transform: translateX(0px); 764 | -moz-transform: translateX(0px); 765 | -ms-transform: translateX(0px); 766 | -o-transform: translateX(0px); 767 | transform: translateX(0px); 768 | } 769 | 40% { 770 | -webkit-transform: translateX(-14px); 771 | -moz-transform: translateX(-14px); 772 | -ms-transform: translateX(-14px); 773 | -o-transform: translateX(-14px); 774 | transform: translateX(-14px); 775 | } 776 | 70% { 777 | -webkit-transform: translateX(4px); 778 | -moz-transform: translateX(4px); 779 | -ms-transform: translateX(4px); 780 | -o-transform: translateX(4px); 781 | transform: translateX(4px); 782 | } 783 | 100% { 784 | -webkit-transform: translateX(0px); 785 | -moz-transform: translateX(0px); 786 | -ms-transform: translateX(0px); 787 | -o-transform: translateX(0px); 788 | transform: translateX(0px); 789 | } 790 | } 791 | 792 | @-webkit-keyframes rise { 793 | 0% { 794 | opacity: 0; 795 | transform: translateY(110%); 796 | } 797 | 30% { 798 | opacity: 1; 799 | transform: translateY(100%); 800 | } 801 | 70% { 802 | opacity: 1; 803 | transform: translateY(100%); 804 | } 805 | 100% { 806 | opacity: 1; 807 | transform: translateY(0%); 808 | } 809 | } 810 | 811 | @-moz-keyframes rise { 812 | 0% { 813 | opacity: 0; 814 | transform: translateY(110%); 815 | } 816 | 30% { 817 | opacity: 1; 818 | transform: translateY(100%); 819 | } 820 | 70% { 821 | opacity: 1; 822 | transform: translateY(100%); 823 | } 824 | 100% { 825 | opacity: 1; 826 | transform: translateY(0%); 827 | } 828 | } 829 | 830 | @keyframes rise { 831 | 0% { 832 | opacity: 0; 833 | transform: translateY(110%); 834 | } 835 | 30% { 836 | opacity: 1; 837 | transform: translateY(100%); 838 | } 839 | 70% { 840 | opacity: 1; 841 | transform: translateY(100%); 842 | } 843 | 100% { 844 | opacity: 1; 845 | transform: translateY(0%); 846 | } 847 | } 848 | 849 | @-webkit-keyframes boop { 850 | 0% { 851 | opacity: 0; 852 | -webkit-transform: scale(1.5); 853 | } 854 | 15% { 855 | opacity: 1; 856 | -webkit-transform: scale(0.75); 857 | } 858 | 30% { 859 | -webkit-transform: scale(1.2); 860 | } 861 | 50% { 862 | -webkit-transform: scale(0.85); 863 | } 864 | 75% { 865 | -webkit-transform: scale(1.1); 866 | } 867 | 100% { 868 | opacity: 1; 869 | -webkit-transform: scale(1); 870 | } 871 | } 872 | 873 | @-moz-keyframes boop { 874 | 0% { 875 | opacity: 0; 876 | -moz-transform: scale(1.5); 877 | } 878 | 15% { 879 | opacity: 1; 880 | -moz-transform: scale(0.75); 881 | } 882 | 30% { 883 | -moz-transform: scale(1.2); 884 | } 885 | 50% { 886 | -moz-transform: scale(0.85); 887 | } 888 | 75% { 889 | -moz-transform: scale(1.1); 890 | } 891 | 100% { 892 | opacity: 1; 893 | -moz-transform: scale(1); 894 | } 895 | } 896 | 897 | @keyframes boop { 898 | 0% { 899 | opacity: 0; 900 | -webkit-transform: scale(1.5); 901 | -moz-transform: scale(1.5); 902 | -ms-transform: scale(1.5); 903 | -o-transform: scale(1.5); 904 | transform: scale(1.5); 905 | } 906 | 15% { 907 | opacity: 1; 908 | -webkit-transform: scale(0.75); 909 | -moz-transform: scale(0.75); 910 | -ms-transform: scale(0.75); 911 | -o-transform: scale(0.75); 912 | transform: scale(0.75); 913 | } 914 | 30% { 915 | -webkit-transform: scale(1.2); 916 | -moz-transform: scale(1.2); 917 | -ms-transform: scale(1.2); 918 | -o-transform: scale(1.2); 919 | transform: scale(1.2); 920 | } 921 | 50% { 922 | -webkit-transform: scale(0.85); 923 | -moz-transform: scale(0.85); 924 | -ms-transform: scale(0.85); 925 | -o-transform: scale(0.85); 926 | transform: scale(0.85); 927 | } 928 | 75% { 929 | -webkit-transform: scale(1.1); 930 | -moz-transform: scale(1.1); 931 | -ms-transform: scale(1.1); 932 | -o-transform: scale(1.1); 933 | transform: scale(1.1); 934 | } 935 | 100% { 936 | opacity: 1; 937 | -webkit-transform: scale(1); 938 | -moz-transform: scale(1); 939 | -ms-transform: scale(1); 940 | -o-transform: scale(1); 941 | transform: scale(1); 942 | } 943 | } 944 | 945 | @-webkit-keyframes revealUp { 946 | 0% { 947 | opacity: 0; 948 | transform: translateY(37vh); 949 | } 950 | 25% { 951 | opacity: 1; 952 | } 953 | 50% { 954 | transform: translateY(37vh); 955 | } 956 | 100% { 957 | transform: translateY(0vh); 958 | } 959 | } 960 | 961 | @-moz-keyframes revealUp { 962 | 0% { 963 | opacity: 0; 964 | transform: translateY(37vh); 965 | } 966 | 25% { 967 | opacity: 1; 968 | } 969 | 50% { 970 | transform: translateY(37vh); 971 | } 972 | 100% { 973 | transform: translateY(0vh); 974 | } 975 | } 976 | 977 | @keyframes revealUp { 978 | 0% { 979 | opacity: 0; 980 | transform: translateY(37vh); 981 | } 982 | 25% { 983 | opacity: 1; 984 | } 985 | 50% { 986 | transform: translateY(37vh); 987 | } 988 | 100% { 989 | transform: translateY(0vh); 990 | } 991 | } 992 | 993 | @-webkit-keyframes spin { 994 | 0% { 995 | transform: rotateZ(0deg); 996 | } 997 | 100% { 998 | transform: rotateZ(360deg); 999 | } 1000 | } 1001 | 1002 | @-moz-keyframes spin { 1003 | 0% { 1004 | transform: rotateZ(0deg); 1005 | } 1006 | 100% { 1007 | transform: rotateZ(360deg); 1008 | } 1009 | } 1010 | 1011 | @keyframes spin { 1012 | 0% { 1013 | transform: rotateZ(0deg); 1014 | } 1015 | 100% { 1016 | transform: rotateZ(360deg); 1017 | } 1018 | } 1019 | 1020 | @-webkit-keyframes ratchet { 1021 | 0% { 1022 | transform: rotateZ(0deg); 1023 | -webkit-animation-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); 1024 | } 1025 | 50% { 1026 | transform: rotateZ(900deg); 1027 | -webkit-animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); 1028 | } 1029 | 65% { 1030 | transform: rotateZ(945deg); 1031 | -webkit-animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); 1032 | } 1033 | 70% { 1034 | transform: rotateZ(900deg); 1035 | } 1036 | 71%, 1037 | 100% { 1038 | transform: rotateZ(0deg); 1039 | } 1040 | } 1041 | 1042 | @-moz-keyframes ratchet { 1043 | 0% { 1044 | transform: rotateZ(0deg); 1045 | -moz-animation-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); 1046 | } 1047 | 50% { 1048 | transform: rotateZ(900deg); 1049 | -moz-animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); 1050 | } 1051 | 65% { 1052 | transform: rotateZ(945deg); 1053 | -moz-animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); 1054 | } 1055 | 70% { 1056 | transform: rotateZ(900deg); 1057 | } 1058 | 71%, 1059 | 100% { 1060 | transform: rotateZ(0deg); 1061 | } 1062 | } 1063 | 1064 | @keyframes ratchet { 1065 | 0% { 1066 | transform: rotateZ(0deg); 1067 | -webkit-animation-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); 1068 | -moz-animation-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); 1069 | animation-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); 1070 | } 1071 | 50% { 1072 | transform: rotateZ(900deg); 1073 | -webkit-animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); 1074 | -moz-animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); 1075 | animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); 1076 | } 1077 | 65% { 1078 | transform: rotateZ(945deg); 1079 | -webkit-animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); 1080 | -moz-animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); 1081 | animation-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); 1082 | } 1083 | 70% { 1084 | transform: rotateZ(900deg); 1085 | } 1086 | 71%, 1087 | 100% { 1088 | transform: rotateZ(0deg); 1089 | } 1090 | } 1091 | 1092 | @-webkit-keyframes sendUp { 1093 | 0%, 1094 | 70% { 1095 | transform: translateY(0px); 1096 | opacity: 1; 1097 | } 1098 | 85% { 1099 | transform: translateY(-30px); 1100 | opacity: 0; 1101 | } 1102 | 86% { 1103 | transform: translateY(30px); 1104 | opacity: 0; 1105 | } 1106 | 100% { 1107 | transform: translateY(0px); 1108 | opacity: 1; 1109 | } 1110 | } 1111 | 1112 | @-moz-keyframes sendUp { 1113 | 0%, 1114 | 70% { 1115 | transform: translateY(0px); 1116 | opacity: 1; 1117 | } 1118 | 85% { 1119 | transform: translateY(-30px); 1120 | opacity: 0; 1121 | } 1122 | 86% { 1123 | transform: translateY(30px); 1124 | opacity: 0; 1125 | } 1126 | 100% { 1127 | transform: translateY(0px); 1128 | opacity: 1; 1129 | } 1130 | } 1131 | 1132 | @keyframes sendUp { 1133 | 0%, 1134 | 70% { 1135 | transform: translateY(0px); 1136 | opacity: 1; 1137 | } 1138 | 85% { 1139 | transform: translateY(-30px); 1140 | opacity: 0; 1141 | } 1142 | 86% { 1143 | transform: translateY(30px); 1144 | opacity: 0; 1145 | } 1146 | 100% { 1147 | transform: translateY(0px); 1148 | opacity: 1; 1149 | } 1150 | } 1151 | 1152 | @-webkit-keyframes sendDown { 1153 | 0%, 1154 | 70% { 1155 | transform: translateY(0px); 1156 | opacity: 1; 1157 | } 1158 | 85% { 1159 | transform: translateY(30px); 1160 | opacity: 0; 1161 | } 1162 | 86% { 1163 | transform: translateY(-30px); 1164 | opacity: 0; 1165 | } 1166 | 100% { 1167 | transform: translateY(0px); 1168 | opacity: 1; 1169 | } 1170 | } 1171 | 1172 | @-moz-keyframes sendDown { 1173 | 0%, 1174 | 70% { 1175 | transform: translateY(0px); 1176 | opacity: 1; 1177 | } 1178 | 85% { 1179 | transform: translateY(30px); 1180 | opacity: 0; 1181 | } 1182 | 86% { 1183 | transform: translateY(-30px); 1184 | opacity: 0; 1185 | } 1186 | 100% { 1187 | transform: translateY(0px); 1188 | opacity: 1; 1189 | } 1190 | } 1191 | 1192 | @keyframes sendDown { 1193 | 0%, 1194 | 70% { 1195 | transform: translateY(0px); 1196 | opacity: 1; 1197 | } 1198 | 85% { 1199 | transform: translateY(30px); 1200 | opacity: 0; 1201 | } 1202 | 86% { 1203 | transform: translateY(-30px); 1204 | opacity: 0; 1205 | } 1206 | 100% { 1207 | transform: translateY(0px); 1208 | opacity: 1; 1209 | } 1210 | } 1211 | 1212 | @-webkit-keyframes pulse { 1213 | 0% { 1214 | background-color: rgba(92, 212, 147, 0); 1215 | box-shadow: 0px 0px 0px 0px rgba(92, 212, 147, 0); 1216 | } 1217 | 20% { 1218 | background-color: rgba(92, 212, 147, 0.5); 1219 | box-shadow: 0px 0px 0px 0px #5cd493; 1220 | } 1221 | 80%, 1222 | 99% { 1223 | background-color: rgba(92, 212, 147, 0); 1224 | box-shadow: 0px 0px 0px 8px rgba(92, 212, 147, 0); 1225 | } 1226 | 100% { 1227 | background-color: rgba(92, 212, 147, 0); 1228 | box-shadow: 0px 0px 0px 0px rgba(92, 212, 147, 0); 1229 | } 1230 | } 1231 | 1232 | @-moz-keyframes pulse { 1233 | 0% { 1234 | background-color: rgba(92, 212, 147, 0); 1235 | box-shadow: 0px 0px 0px 0px rgba(92, 212, 147, 0); 1236 | } 1237 | 20% { 1238 | background-color: rgba(92, 212, 147, 0.5); 1239 | box-shadow: 0px 0px 0px 0px #5cd493; 1240 | } 1241 | 80%, 1242 | 99% { 1243 | background-color: rgba(92, 212, 147, 0); 1244 | box-shadow: 0px 0px 0px 8px rgba(92, 212, 147, 0); 1245 | } 1246 | 100% { 1247 | background-color: rgba(92, 212, 147, 0); 1248 | box-shadow: 0px 0px 0px 0px rgba(92, 212, 147, 0); 1249 | } 1250 | } 1251 | 1252 | @keyframes pulse { 1253 | 0% { 1254 | background-color: rgba(92, 212, 147, 0); 1255 | box-shadow: 0px 0px 0px 0px rgba(92, 212, 147, 0); 1256 | } 1257 | 20% { 1258 | background-color: rgba(92, 212, 147, 0.5); 1259 | box-shadow: 0px 0px 0px 0px #5cd493; 1260 | } 1261 | 80%, 1262 | 99% { 1263 | background-color: rgba(92, 212, 147, 0); 1264 | box-shadow: 0px 0px 0px 8px rgba(92, 212, 147, 0); 1265 | } 1266 | 100% { 1267 | background-color: rgba(92, 212, 147, 0); 1268 | box-shadow: 0px 0px 0px 0px rgba(92, 212, 147, 0); 1269 | } 1270 | } 1271 | 1272 | body { 1273 | background-color: #fff; 1274 | color: #393536; 1275 | font-family: "BT Mono", "Helvetica Neue", Helvetica, Sans-serif; 1276 | font-size: 16px; 1277 | font-weight: normal; 1278 | -webkit-font-smoothing: antialiased; 1279 | letter-spacing: .008em; 1280 | text-rendering: optimizeLegibility; 1281 | line-height: 25px; 1282 | } 1283 | 1284 | h1, 1285 | h2, 1286 | h3, 1287 | h4, 1288 | h5, 1289 | h6 { 1290 | color: #393536; 1291 | font-family: "BT Mono medium", "Helvetica Neue", Helvetica, Sans-serif; 1292 | font-weight: normal; 1293 | line-height: 1.3; 1294 | margin: 0; 1295 | } 1296 | 1297 | .dark h1, 1298 | .dark h2, 1299 | .dark h3, 1300 | .dark h4, 1301 | .dark h5, 1302 | .dark h6 { 1303 | color: #fff; 1304 | } 1305 | 1306 | h1, 1307 | h2 { 1308 | font-family: "BT Mono medium", "Helvetica Neue", Helvetica, Sans-serif; 1309 | letter-spacing: -1px; 1310 | } 1311 | 1312 | h1 { 1313 | font-size: 42px; 1314 | line-height: 1.1em; 1315 | margin: 0 0 0 -0.05em; 1316 | } 1317 | 1318 | h2 { 1319 | margin: 0 0 25px; 1320 | font-size: 42px; 1321 | } 1322 | 1323 | h3 { 1324 | font-size: 23px; 1325 | } 1326 | 1327 | h4 { 1328 | font-size: 20px; 1329 | text-transform: uppercase; 1330 | } 1331 | 1332 | h5 { 1333 | font-size: 18px; 1334 | font-weight: normal; 1335 | } 1336 | 1337 | p { 1338 | font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; 1339 | line-height: 1.4; 1340 | margin: 1em 0; 1341 | } 1342 | 1343 | ul, 1344 | ol { 1345 | list-style: none; 1346 | padding: 0; 1347 | } 1348 | 1349 | strong { 1350 | font-family: "Open Sans semibold", "Avenir", "Helvetica Neue", Helvetica, Sans-serif; 1351 | font-weight: normal; 1352 | } 1353 | 1354 | a { 1355 | -webkit-transition: color 0.2s ease, border-color, 0.2s ease; 1356 | -moz-transition: color 0.2s ease, border-color, 0.2s ease; 1357 | -ms-transition: color 0.2s ease, border-color, 0.2s ease; 1358 | -o-transition: color 0.2s ease, border-color, 0.2s ease; 1359 | transition: color 0.2s ease, border-color, 0.2s ease; 1360 | color: #393536; 1361 | text-decoration: none; 1362 | } 1363 | 1364 | a:hover, 1365 | a:focus, 1366 | a:active { 1367 | color: #5CD493; 1368 | border-color: #5CD493; 1369 | } 1370 | 1371 | p a, 1372 | li a { 1373 | font-family: "BT Mono medium", "Helvetica Neue", Helvetica, Sans-serif; 1374 | border-bottom: solid 1px #DEE2E5; 1375 | padding: .2em .1em; 1376 | margin: 0 -.1em; 1377 | } 1378 | 1379 | p a:hover, 1380 | li a:hover { 1381 | border-color: #5CD493; 1382 | } 1383 | 1384 | img { 1385 | display: block; 1386 | max-width: 100%; 1387 | } 1388 | 1389 | html { 1390 | box-sizing: border-box; 1391 | } 1392 | 1393 | *, 1394 | *:before, 1395 | *:after { 1396 | box-sizing: inherit; 1397 | } 1398 | 1399 | html, 1400 | body { 1401 | height: 100%; 1402 | min-height: 100%; 1403 | width: 100%; 1404 | overflow: auto; 1405 | } 1406 | 1407 | body { 1408 | text-align: center; 1409 | } 1410 | 1411 | @media (min-width: 1025px) { 1412 | body { 1413 | display: -webkit-box; 1414 | display: -moz-box; 1415 | display: box; 1416 | display: -webkit-flex; 1417 | display: -moz-flex; 1418 | display: -ms-flexbox; 1419 | display: flex; 1420 | -webkit-box-align: center; 1421 | -moz-box-align: center; 1422 | box-align: center; 1423 | -webkit-align-items: center; 1424 | -moz-align-items: center; 1425 | -ms-align-items: center; 1426 | -o-align-items: center; 1427 | align-items: center; 1428 | -ms-flex-align: center; 1429 | -webkit-align-self: stretch; 1430 | -moz-align-self: stretch; 1431 | align-self: stretch; 1432 | -ms-flex-item-align: stretch; 1433 | -webkit-box-orient: vertical; 1434 | -moz-box-orient: vertical; 1435 | box-orient: vertical; 1436 | -webkit-box-direction: normal; 1437 | -moz-box-direction: normal; 1438 | box-direction: normal; 1439 | -webkit-flex-direction: column; 1440 | -moz-flex-direction: column; 1441 | flex-direction: column; 1442 | -ms-flex-direction: column; 1443 | -webkit-box-flex: 1; 1444 | -moz-box-flex: 1; 1445 | box-flex: 1; 1446 | -webkit-flex: 1 1 auto; 1447 | -moz-flex: 1 1 auto; 1448 | -ms-flex: 1 1 auto; 1449 | flex: 1 1 auto; 1450 | overflow: hidden; 1451 | } 1452 | } 1453 | 1454 | header.main, 1455 | footer { 1456 | width: 100%; 1457 | } 1458 | 1459 | header.main { 1460 | position: fixed; 1461 | left: 0px; 1462 | top: 0px; 1463 | width: 100%; 1464 | z-index: 20; 1465 | background-color: #fff; 1466 | border-bottom: solid 1px #DEE2E5; 1467 | } 1468 | 1469 | @media (min-width: 1025px) { 1470 | header.main { 1471 | background-color: transparent; 1472 | border-bottom: none; 1473 | } 1474 | } 1475 | 1476 | header { 1477 | -webkit-box-flex: 0; 1478 | -moz-box-flex: 0; 1479 | box-flex: 0; 1480 | -webkit-flex: 0 0 auto; 1481 | -moz-flex: 0 0 auto; 1482 | -ms-flex: 0 0 auto; 1483 | flex: 0 0 auto; 1484 | -webkit-align-self: flex-start; 1485 | -moz-align-self: flex-start; 1486 | align-self: flex-start; 1487 | -ms-flex-item-align: start; 1488 | } 1489 | 1490 | article { 1491 | -webkit-box-flex: 1; 1492 | -moz-box-flex: 1; 1493 | box-flex: 1; 1494 | -webkit-flex: 1 1 auto; 1495 | -moz-flex: 1 1 auto; 1496 | -ms-flex: 1 1 auto; 1497 | flex: 1 1 auto; 1498 | -webkit-align-self: stretch; 1499 | -moz-align-self: stretch; 1500 | align-self: stretch; 1501 | -ms-flex-item-align: stretch; 1502 | position: relative; 1503 | overflow: auto; 1504 | -webkit-overflow-scrolling: touch; 1505 | z-index: 0; 1506 | } 1507 | 1508 | footer { 1509 | -webkit-box-flex: 0; 1510 | -moz-box-flex: 0; 1511 | box-flex: 0; 1512 | -webkit-flex: 0 0 auto; 1513 | -moz-flex: 0 0 auto; 1514 | -ms-flex: 0 0 auto; 1515 | flex: 0 0 auto; 1516 | -webkit-align-self: flex-end; 1517 | -moz-align-self: flex-end; 1518 | align-self: flex-end; 1519 | -ms-flex-item-align: end; 1520 | background-color: #f6f6f6; 1521 | } 1522 | 1523 | .wrapper { 1524 | width: 100%; 1525 | overflow: auto; 1526 | z-index: 0; 1527 | padding: 4em 0; 1528 | } 1529 | 1530 | @media (min-width: 1025px) { 1531 | .wrapper { 1532 | display: -webkit-box; 1533 | display: -moz-box; 1534 | display: box; 1535 | display: -webkit-flex; 1536 | display: -moz-flex; 1537 | display: -ms-flexbox; 1538 | display: flex; 1539 | -webkit-box-flex: 1; 1540 | -moz-box-flex: 1; 1541 | box-flex: 1; 1542 | -webkit-flex: 1 1 auto; 1543 | -moz-flex: 1 1 auto; 1544 | -ms-flex: 1 1 auto; 1545 | flex: 1 1 auto; 1546 | } 1547 | } 1548 | 1549 | .container { 1550 | max-width: 46em; 1551 | margin: 0 auto; 1552 | width: 100%; 1553 | } 1554 | 1555 | .container.wide { 1556 | max-width: 100%; 1557 | } 1558 | 1559 | .content { 1560 | padding: 36px 12px; 1561 | } 1562 | 1563 | .content.slim, 1564 | .content.compact { 1565 | padding: 12px; 1566 | } 1567 | 1568 | @media (min-width: 641px) { 1569 | .content { 1570 | padding: 36px 24px; 1571 | } 1572 | .content.slim { 1573 | padding: 24px 24px; 1574 | } 1575 | .content.compact { 1576 | padding: 24px 24px; 1577 | } 1578 | } 1579 | 1580 | @media (min-width: 1025px) { 1581 | .content { 1582 | padding: 36px 44px; 1583 | } 1584 | .content.slim { 1585 | padding: 24px 44px; 1586 | } 1587 | .content.compact { 1588 | padding: 40px; 1589 | } 1590 | } 1591 | 1592 | @media (max-height: 30em) { 1593 | .content, 1594 | .content.slim { 1595 | padding-top: 10px; 1596 | padding-bottom: 10px; 1597 | } 1598 | } 1599 | 1600 | section { 1601 | display: inline-block; 1602 | width: 100%; 1603 | margin-bottom: 30px; 1604 | z-index: 1; 1605 | } 1606 | 1607 | section:last-child { 1608 | margin-bottom: 0; 1609 | } 1610 | 1611 | @media (max-height: 30em) { 1612 | section { 1613 | margin-bottom: 10px; 1614 | } 1615 | } 1616 | 1617 | .row, 1618 | .set { 1619 | -webkit-align-content: stretch; 1620 | -moz-align-content: stretch; 1621 | align-content: stretch; 1622 | -ms-flex-line-pack: stretch; 1623 | -webkit-box-align: center; 1624 | -moz-box-align: center; 1625 | box-align: center; 1626 | -webkit-align-items: center; 1627 | -moz-align-items: center; 1628 | -ms-align-items: center; 1629 | -o-align-items: center; 1630 | align-items: center; 1631 | -ms-flex-align: center; 1632 | display: -webkit-box; 1633 | display: -moz-box; 1634 | display: box; 1635 | display: -webkit-flex; 1636 | display: -moz-flex; 1637 | display: -ms-flexbox; 1638 | display: flex; 1639 | -webkit-box-orient: vertical; 1640 | -moz-box-orient: vertical; 1641 | box-orient: vertical; 1642 | -webkit-box-direction: normal; 1643 | -moz-box-direction: normal; 1644 | box-direction: normal; 1645 | -webkit-flex-direction: column; 1646 | -moz-flex-direction: column; 1647 | flex-direction: column; 1648 | -ms-flex-direction: column; 1649 | } 1650 | 1651 | @media (min-width: 641px) { 1652 | .row, 1653 | .set { 1654 | -webkit-box-orient: horizontal; 1655 | -moz-box-orient: horizontal; 1656 | box-orient: horizontal; 1657 | -webkit-box-direction: normal; 1658 | -moz-box-direction: normal; 1659 | box-direction: normal; 1660 | -webkit-flex-direction: row; 1661 | -moz-flex-direction: row; 1662 | flex-direction: row; 1663 | -ms-flex-direction: row; 1664 | } 1665 | } 1666 | 1667 | .col { 1668 | display: -webkit-box; 1669 | display: -moz-box; 1670 | display: box; 1671 | display: -webkit-flex; 1672 | display: -moz-flex; 1673 | display: -ms-flexbox; 1674 | display: flex; 1675 | -webkit-box-orient: horizontal; 1676 | -moz-box-orient: horizontal; 1677 | box-orient: horizontal; 1678 | -webkit-box-direction: normal; 1679 | -moz-box-direction: normal; 1680 | box-direction: normal; 1681 | -webkit-flex-direction: row; 1682 | -moz-flex-direction: row; 1683 | flex-direction: row; 1684 | -ms-flex-direction: row; 1685 | -webkit-flex-grow: 1; 1686 | -moz-flex-grow: 1; 1687 | flex-grow: 1; 1688 | -ms-flex-positive: 1; 1689 | margin: 0 auto; 1690 | } 1691 | 1692 | .fill, 1693 | .fit { 1694 | display: inline-block; 1695 | margin: auto; 1696 | } 1697 | 1698 | .fill { 1699 | -webkit-flex-grow: 1; 1700 | -moz-flex-grow: 1; 1701 | flex-grow: 1; 1702 | -ms-flex-positive: 1; 1703 | } 1704 | 1705 | .fit { 1706 | -webkit-flex-grow: 0; 1707 | -moz-flex-grow: 0; 1708 | flex-grow: 0; 1709 | -ms-flex-positive: 0; 1710 | } 1711 | 1712 | .button { 1713 | -webkit-transition: background-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), border-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), opacity 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1714 | -moz-transition: background-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), border-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), opacity 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1715 | -ms-transition: background-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), border-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), opacity 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1716 | -o-transition: background-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), border-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), opacity 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1717 | transition: background-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), border-color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95), opacity 140ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1718 | background-color: #5CD493; 1719 | border: none; 1720 | border-radius: 2px; 1721 | display: inline-block; 1722 | color: #fff; 1723 | font-family: "BT Mono bold", "Helvetica Neue", Helvetica, Sans-serif; 1724 | font-size: 16px; 1725 | letter-spacing: 0; 1726 | line-height: normal; 1727 | opacity: 1; 1728 | outline: none; 1729 | padding: 0; 1730 | position: relative; 1731 | text-decoration: none; 1732 | text-align: center; 1733 | width: 100%; 1734 | } 1735 | 1736 | @media (min-width: 641px) { 1737 | .button { 1738 | width: auto; 1739 | } 1740 | } 1741 | 1742 | .button.full { 1743 | width: 100%; 1744 | } 1745 | 1746 | .button:hover, 1747 | .button:focus { 1748 | background-color: #7cdda8; 1749 | color: #fff; 1750 | } 1751 | 1752 | .button:focus { 1753 | outline: none; 1754 | border-color: #44ce83; 1755 | } 1756 | 1757 | .button.out { 1758 | color: transparent; 1759 | } 1760 | 1761 | .button span { 1762 | -webkit-transition: color 140ms ease; 1763 | -moz-transition: color 140ms ease; 1764 | -ms-transition: color 140ms ease; 1765 | -o-transition: color 140ms ease; 1766 | transition: color 140ms ease; 1767 | display: inline-block; 1768 | padding: 1em 2.5em 1.15em; 1769 | position: relative; 1770 | text-align: center; 1771 | } 1772 | 1773 | .button span:after { 1774 | -webkit-animation: spin 400ms infinite normal cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards 0s paused; 1775 | -moz-animation: spin 400ms infinite normal cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards 0s paused; 1776 | animation: spin 400ms infinite normal cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards 0s paused; 1777 | -webkit-transition: opacity 200ms ease; 1778 | -moz-transition: opacity 200ms ease; 1779 | -ms-transition: opacity 200ms ease; 1780 | -o-transition: opacity 200ms ease; 1781 | transition: opacity 200ms ease; 1782 | width: 20px; 1783 | height: 20px; 1784 | border-radius: 50%; 1785 | border: solid 2px #fff; 1786 | border-top-color: transparent; 1787 | left: 50%; 1788 | opacity: 0; 1789 | top: 50%; 1790 | margin: -10px 0 0 -10px; 1791 | } 1792 | 1793 | .button.loading { 1794 | cursor: none; 1795 | background-color: #bdbdbf; 1796 | } 1797 | 1798 | .button.loading span { 1799 | color: transparent; 1800 | } 1801 | 1802 | .button.loading span:after { 1803 | -webkit-animation-play-state: running; 1804 | -moz-animation-play-state: running; 1805 | animation-play-state: running; 1806 | opacity: 1; 1807 | } 1808 | 1809 | .button.loading:after, 1810 | .button:hover:after { 1811 | opacity: 0; 1812 | } 1813 | 1814 | .button.secondary { 1815 | background-color: transparent; 1816 | border: solid 1px #5CD493; 1817 | color: #5CD493; 1818 | font-size: 16px; 1819 | } 1820 | 1821 | .button.secondary:hover { 1822 | color: #fff; 1823 | background-color: #5CD493; 1824 | } 1825 | 1826 | .button.cap { 1827 | width: 100%; 1828 | border-radius: 0px 0px 3px 3px; 1829 | } 1830 | 1831 | ::-webkit-input-placeholder { 1832 | color: #6E787F; 1833 | line-height: 1; 1834 | } 1835 | 1836 | :-moz-placeholder { 1837 | color: #6E787F; 1838 | line-height: 1; 1839 | } 1840 | 1841 | ::-moz-placeholder { 1842 | color: #6E787F; 1843 | line-height: 1; 1844 | } 1845 | 1846 | :-ms-input-placeholder { 1847 | color: #6E787F; 1848 | line-height: 1; 1849 | } 1850 | 1851 | input:focus::-webkit-input-placeholder { 1852 | color: #283036; 1853 | } 1854 | 1855 | input:focus:-moz-placeholder { 1856 | color: #283036; 1857 | } 1858 | 1859 | input:focus::-moz-placeholder { 1860 | color: #283036; 1861 | } 1862 | 1863 | input:focus:-ms-input-placeholder { 1864 | color: #283036; 1865 | } 1866 | 1867 | label[for="amount"] { 1868 | -webkit-transition: background-color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1869 | -moz-transition: background-color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1870 | -ms-transition: background-color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1871 | -o-transition: background-color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1872 | transition: background-color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95), color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95); 1873 | border-top: solid 1px #DEE2E5; 1874 | border-bottom: solid 1px #DEE2E5; 1875 | color: #6E787F; 1876 | cursor: pointer; 1877 | display: block; 1878 | font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; 1879 | font-weight: 300; 1880 | padding: 12px 14px; 1881 | position: relative; 1882 | margin-top: -11px; 1883 | width: 100%; 1884 | z-index: 1; 1885 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; 1886 | font-size: 1.2rem; 1887 | margin-bottom: 1rem; 1888 | } 1889 | 1890 | @media (min-width: 720px) { 1891 | label[for="amount"] { 1892 | border: 1px solid #b5b5b5; 1893 | border-radius: 3px; 1894 | } 1895 | } 1896 | 1897 | label[for="amount"] .input-label { 1898 | -webkit-transition: opacity 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1899 | -moz-transition: opacity 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1900 | -ms-transition: opacity 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1901 | -o-transition: opacity 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1902 | transition: opacity 0.2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1903 | color: #000; 1904 | display: block; 1905 | font-size: 12px; 1906 | font-weight: 500; 1907 | line-height: 1; 1908 | margin-bottom: 4px; 1909 | } 1910 | 1911 | label[for="amount"].has-focus { 1912 | background-color: #f9f9f9; 1913 | cursor: text; 1914 | z-index: 2; 1915 | } 1916 | 1917 | label[for="amount"].has-focus .input-wrapper:after { 1918 | color: #393536; 1919 | } 1920 | 1921 | label[for="amount"].has-focus .input-label { 1922 | color: #000; 1923 | } 1924 | 1925 | input { 1926 | background-color: transparent; 1927 | display: block; 1928 | border: none; 1929 | color: #000; 1930 | cursor: pointer; 1931 | font-size: 1.2rem; 1932 | outline: none; 1933 | line-height: 1; 1934 | width: 100%; 1935 | } 1936 | 1937 | .input-wrapper { 1938 | position: relative; 1939 | } 1940 | 1941 | .amount-wrapper input { 1942 | -webkit-transition: transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.2s ease; 1943 | -moz-transition: transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.2s ease; 1944 | -ms-transition: transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.2s ease; 1945 | -o-transition: transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.2s ease; 1946 | transition: transform 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.2s ease; 1947 | padding: 0 14px; 1948 | } 1949 | 1950 | .amount-wrapper:after { 1951 | -webkit-transition: opacity 0.2s ease; 1952 | -moz-transition: opacity 0.2s ease; 1953 | -ms-transition: opacity 0.2s ease; 1954 | -o-transition: opacity 0.2s ease; 1955 | transition: opacity 0.2s ease; 1956 | -webkit-transform: translateY(-50%); 1957 | -moz-transform: translateY(-50%); 1958 | -ms-transform: translateY(-50%); 1959 | -o-transform: translateY(-50%); 1960 | transform: translateY(-50%); 1961 | content: "$"; 1962 | color: #393536; 1963 | display: inline-block; 1964 | line-height: 1; 1965 | left: 0px; 1966 | position: absolute; 1967 | top: 50%; 1968 | } 1969 | 1970 | /* Modules */ 1971 | 1972 | header .fill { 1973 | text-align: left; 1974 | } 1975 | 1976 | header a, 1977 | .pseudoshop, 1978 | .braintree { 1979 | display: inline-block; 1980 | text-decoration: none; 1981 | vertical-align: middle; 1982 | } 1983 | 1984 | .pseudoshop, 1985 | .braintree { 1986 | background-color: #fff; 1987 | padding: 3px 8px; 1988 | margin: 0 -8px; 1989 | } 1990 | 1991 | .pseudoshop { 1992 | -webkit-transition: color 160ms ease; 1993 | -moz-transition: color 160ms ease; 1994 | -ms-transition: color 160ms ease; 1995 | -o-transition: color 160ms ease; 1996 | transition: color 160ms ease; 1997 | -webkit-box-ordinal-group: 2; 1998 | -moz-box-ordinal-group: 2; 1999 | box-ordinal-group: 2; 2000 | -webkit-order: 2; 2001 | -moz-order: 2; 2002 | order: 2; 2003 | -ms-flex-order: 2; 2004 | color: #393536; 2005 | font-family: "Open Sans regular", "Avenir", "Helvetica Neue", Helvetica, Sans-serif; 2006 | text-align: left; 2007 | } 2008 | 2009 | .pseudoshop strong { 2010 | font-family: "Open Sans bold", "Avenir", "Helvetica Neue", Helvetica, Sans-serif; 2011 | } 2012 | 2013 | @media (min-width: 641px) { 2014 | .pseudoshop { 2015 | -webkit-box-ordinal-group: 1; 2016 | -moz-box-ordinal-group: 1; 2017 | box-ordinal-group: 1; 2018 | -webkit-order: 1; 2019 | -moz-order: 1; 2020 | order: 1; 2021 | -ms-flex-order: 1; 2022 | } 2023 | } 2024 | 2025 | .pseudoshop:hover { 2026 | color: #707073; 2027 | } 2028 | 2029 | .braintree { 2030 | -webkit-transition: opacity 160ms ease; 2031 | -moz-transition: opacity 160ms ease; 2032 | -ms-transition: opacity 160ms ease; 2033 | -o-transition: opacity 160ms ease; 2034 | transition: opacity 160ms ease; 2035 | -webkit-box-ordinal-group: 1; 2036 | -moz-box-ordinal-group: 1; 2037 | box-ordinal-group: 1; 2038 | -webkit-order: 1; 2039 | -moz-order: 1; 2040 | order: 1; 2041 | -ms-flex-order: 1; 2042 | color: #393536; 2043 | font-size: 12px; 2044 | font-family: "BT Mono bold", "Helvetica Neue", Helvetica, Sans-serif; 2045 | opacity: .5; 2046 | } 2047 | 2048 | header.main .braintree { 2049 | display: none; 2050 | } 2051 | 2052 | .dark .braintree { 2053 | background-color: transparent; 2054 | color: #fff; 2055 | opacity: 1; 2056 | } 2057 | 2058 | @media (min-width: 641px) { 2059 | .braintree { 2060 | -webkit-box-ordinal-group: 2; 2061 | -moz-box-ordinal-group: 2; 2062 | box-ordinal-group: 2; 2063 | -webkit-order: 2; 2064 | -moz-order: 2; 2065 | order: 2; 2066 | -ms-flex-order: 2; 2067 | } 2068 | header.main .braintree { 2069 | display: inline-block; 2070 | } 2071 | } 2072 | 2073 | .braintree:hover { 2074 | opacity: 1; 2075 | } 2076 | 2077 | .braintree.notification, 2078 | .braintree.active { 2079 | color: #393536; 2080 | } 2081 | 2082 | @media (min-width: 1025px) { 2083 | .braintree.notification { 2084 | -webkit-animation: pullLeftLarge 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1125ms; 2085 | -moz-animation: pullLeftLarge 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1125ms; 2086 | animation: pullLeftLarge 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1125ms; 2087 | } 2088 | } 2089 | 2090 | .braintree.dismiss { 2091 | -webkit-animation: fadeOutRight 300ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2092 | -moz-animation: fadeOutRight 300ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2093 | animation: fadeOutRight 300ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2094 | -webkit-animation-delay: 0s; 2095 | -moz-animation-delay: 0s; 2096 | animation-delay: 0s; 2097 | } 2098 | 2099 | .notice-wrapper { 2100 | font-family: "BT Mono medium", "Helvetica Neue", Helvetica, Sans-serif; 2101 | text-align: center; 2102 | width: 100%; 2103 | overflow: hidden; 2104 | } 2105 | 2106 | .notice { 2107 | -webkit-transition: transform 300ms cubic-bezier(0.645, 0.045, 0.355, 1); 2108 | -moz-transition: transform 300ms cubic-bezier(0.645, 0.045, 0.355, 1); 2109 | -ms-transition: transform 300ms cubic-bezier(0.645, 0.045, 0.355, 1); 2110 | -o-transition: transform 300ms cubic-bezier(0.645, 0.045, 0.355, 1); 2111 | transition: transform 300ms cubic-bezier(0.645, 0.045, 0.355, 1); 2112 | -webkit-transform: translateY(-100%); 2113 | -moz-transform: translateY(-100%); 2114 | -ms-transform: translateY(-100%); 2115 | -o-transform: translateY(-100%); 2116 | transform: translateY(-100%); 2117 | border-radius: 1px; 2118 | background-color: #f6f6f6; 2119 | color: #707073; 2120 | padding: 15px; 2121 | width: 100%; 2122 | } 2123 | 2124 | .notice.error { 2125 | background-color: #FF6161; 2126 | color: #fff; 2127 | } 2128 | 2129 | .notice.show { 2130 | -webkit-transform: translateY(0%); 2131 | -moz-transform: translateY(0%); 2132 | -ms-transform: translateY(0%); 2133 | -o-transform: translateY(0%); 2134 | transform: translateY(0%); 2135 | } 2136 | 2137 | table { 2138 | width: 100%; 2139 | } 2140 | 2141 | tr { 2142 | border-top: solid 1px #DEE2E5; 2143 | } 2144 | 2145 | tr:last-child { 2146 | border-bottom: solid 1px #DEE2E5; 2147 | } 2148 | 2149 | th, 2150 | td { 2151 | overflow-wrap: break-word; 2152 | word-wrap: break-word; 2153 | -ms-word-break: break-all; 2154 | word-break: break-word; 2155 | -ms-hyphens: auto; 2156 | -moz-hyphens: auto; 2157 | -webkit-hyphens: auto; 2158 | hyphens: auto; 2159 | line-height: 1.3em; 2160 | font-size: 14px; 2161 | letter-spacing: .02em; 2162 | padding: .6em 0; 2163 | vertical-align: top; 2164 | text-align: left; 2165 | } 2166 | 2167 | th { 2168 | color: #707073; 2169 | font-weight: normal; 2170 | font-family: "BT Mono", "Helvetica Neue", Helvetica, Sans-serif; 2171 | } 2172 | 2173 | td { 2174 | color: #393536; 2175 | font-family: "BT Mono medium", "Helvetica Neue", Helvetica, Sans-serif; 2176 | width: 60%; 2177 | padding: .6em 0 .6em .6em; 2178 | } 2179 | 2180 | .checkout { 2181 | text-align: left; 2182 | } 2183 | 2184 | .checkout section { 2185 | margin: 0; 2186 | padding: 0; 2187 | 2188 | } 2189 | 2190 | @media (min-width: 641px) { 2191 | .checkout section { 2192 | padding: 30px 0; 2193 | } 2194 | } 2195 | 2196 | @media (min-width: 1025px) { 2197 | .checkout section { 2198 | padding: 10px 0; 2199 | } 2200 | } 2201 | 2202 | .checkout.dismiss { 2203 | -webkit-animation: fadeOutDown 250ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2204 | -moz-animation: fadeOutDown 250ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2205 | animation: fadeOutDown 250ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2206 | } 2207 | 2208 | .checkout h1, 2209 | .checkout p, 2210 | .checkout section, 2211 | .checkout .button { 2212 | animation: none; 2213 | } 2214 | 2215 | .checkout h1 { 2216 | -webkit-animation-delay: 200ms; 2217 | -moz-animation-delay: 200ms; 2218 | animation-delay: 200ms; 2219 | } 2220 | 2221 | .checkout header p { 2222 | -webkit-animation-delay: 300ms; 2223 | -moz-animation-delay: 300ms; 2224 | animation-delay: 300ms; 2225 | } 2226 | 2227 | .checkout section { 2228 | -webkit-animation-delay: 450ms; 2229 | -moz-animation-delay: 450ms; 2230 | animation-delay: 450ms; 2231 | -webkit-animation-duration: 550ms; 2232 | -moz-animation-duration: 550ms; 2233 | animation-duration: 550ms; 2234 | } 2235 | 2236 | .checkout .button { 2237 | -webkit-animation-delay: 650ms; 2238 | -moz-animation-delay: 650ms; 2239 | animation-delay: 650ms; 2240 | -webkit-animation-duration: 700ms; 2241 | -moz-animation-duration: 700ms; 2242 | animation-duration: 700ms; 2243 | } 2244 | 2245 | .bt-drop-in-wrapper { 2246 | min-height: 200px; 2247 | position: relative; 2248 | z-index: 1; 2249 | } 2250 | 2251 | .bt-drop-in-placeholder { 2252 | background-color: #f9f9f9; 2253 | height: 187px; 2254 | width: 100%; 2255 | text-align: center; 2256 | color: #707073; 2257 | border: dashed 1px #DEE2E5; 2258 | border-bottom: none; 2259 | display: table; 2260 | } 2261 | 2262 | .bt-drop-in-placeholder:before { 2263 | content: "(Drop-in)"; 2264 | color: #707073; 2265 | display: table-cell; 2266 | vertical-align: middle; 2267 | } 2268 | 2269 | .response { 2270 | text-align: center; 2271 | } 2272 | 2273 | @media (min-width: 1025px) { 2274 | .response { 2275 | -webkit-animation: pullLeftSmall 600ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1100ms; 2276 | -moz-animation: pullLeftSmall 600ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1100ms; 2277 | animation: pullLeftSmall 600ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1100ms; 2278 | padding: 0; 2279 | width: 60%; 2280 | width: 60vw; 2281 | } 2282 | } 2283 | 2284 | .response .notice-wrapper, 2285 | .response .icon, 2286 | .response h1, 2287 | .response section { 2288 | -webkit-animation: fadeInUp 600ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2289 | -moz-animation: fadeInUp 600ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2290 | animation: fadeInUp 600ms 1 normal cubic-bezier(0.215, 0.61, 0.355, 1) both 0s; 2291 | } 2292 | 2293 | .response .icon { 2294 | -webkit-animation-delay: 100ms; 2295 | -moz-animation-delay: 100ms; 2296 | animation-delay: 100ms; 2297 | } 2298 | 2299 | .response h1 { 2300 | -webkit-animation-delay: 200ms; 2301 | -moz-animation-delay: 200ms; 2302 | animation-delay: 200ms; 2303 | } 2304 | 2305 | .response section:nth-of-type(1) { 2306 | -webkit-animation-delay: 400ms; 2307 | -moz-animation-delay: 400ms; 2308 | animation-delay: 400ms; 2309 | } 2310 | 2311 | .response section:nth-of-type(2) { 2312 | -webkit-animation-delay: 600ms; 2313 | -moz-animation-delay: 600ms; 2314 | animation-delay: 600ms; 2315 | } 2316 | 2317 | .response section:nth-of-type(3) { 2318 | -webkit-animation-delay: 800ms; 2319 | -moz-animation-delay: 800ms; 2320 | animation-delay: 800ms; 2321 | } 2322 | 2323 | .response section:nth-of-type(4) { 2324 | -webkit-animation-delay: 1000ms; 2325 | -moz-animation-delay: 1000ms; 2326 | animation-delay: 1000ms; 2327 | } 2328 | 2329 | .response section:last-child { 2330 | -webkit-animation-duration: 800ms; 2331 | -moz-animation-duration: 800ms; 2332 | animation-duration: 800ms; 2333 | } 2334 | 2335 | .response .icon { 2336 | display: inline-block; 2337 | margin: 0 auto; 2338 | } 2339 | 2340 | .response h1 { 2341 | margin: 0.6em 0 0.8em; 2342 | } 2343 | 2344 | .response table { 2345 | margin: auto; 2346 | max-width: 10em; 2347 | } 2348 | 2349 | .response p { 2350 | max-width: 26em; 2351 | display: inline-block; 2352 | margin: 0 auto; 2353 | } 2354 | 2355 | .response .button { 2356 | margin-top: 3em; 2357 | } 2358 | 2359 | aside.drawer { 2360 | -webkit-animation: slideInUp 1200ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 800ms; 2361 | -moz-animation: slideInUp 1200ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 800ms; 2362 | animation: slideInUp 1200ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 800ms; 2363 | width: 100%; 2364 | background-color: #393536; 2365 | text-align: left; 2366 | } 2367 | 2368 | @media (min-width: 1025px) { 2369 | aside.drawer { 2370 | display: -webkit-box; 2371 | display: -moz-box; 2372 | display: box; 2373 | display: -webkit-flex; 2374 | display: -moz-flex; 2375 | display: -ms-flexbox; 2376 | display: flex; 2377 | -webkit-box-flex: 1; 2378 | -moz-box-flex: 1; 2379 | box-flex: 1; 2380 | -webkit-flex: 1 1 auto; 2381 | -moz-flex: 1 1 auto; 2382 | -ms-flex: 1 1 auto; 2383 | flex: 1 1 auto; 2384 | -webkit-align-self: stretch; 2385 | -moz-align-self: stretch; 2386 | align-self: stretch; 2387 | -ms-flex-item-align: stretch; 2388 | -webkit-box-orient: vertical; 2389 | -moz-box-orient: vertical; 2390 | box-orient: vertical; 2391 | -webkit-box-direction: normal; 2392 | -moz-box-direction: normal; 2393 | box-direction: normal; 2394 | -webkit-flex-direction: column; 2395 | -moz-flex-direction: column; 2396 | flex-direction: column; 2397 | -ms-flex-direction: column; 2398 | -webkit-animation: slideLeft 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1200ms; 2399 | -moz-animation: slideLeft 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1200ms; 2400 | animation: slideLeft 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1200ms; 2401 | padding: 0; 2402 | position: fixed; 2403 | width: 33.333%; 2404 | width: 33.333vw; 2405 | height: 100%; 2406 | height: 100vh; 2407 | right: 0px; 2408 | top: 0px; 2409 | bottom: 0px; 2410 | z-index: 900; 2411 | overflow: hidden; 2412 | } 2413 | .out aside.drawer { 2414 | -webkit-animation: slideRight 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1200ms; 2415 | -moz-animation: slideRight 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1200ms; 2416 | animation: slideRight 700ms 1 normal cubic-bezier(0.645, 0.045, 0.355, 1) both 1200ms; 2417 | -webkit-animation-delay: 0s; 2418 | -moz-animation-delay: 0s; 2419 | animation-delay: 0s; 2420 | } 2421 | } 2422 | 2423 | aside.drawer header, 2424 | aside.drawer article { 2425 | width: 100%; 2426 | } 2427 | 2428 | aside.drawer header { 2429 | position: relative; 2430 | border-bottom: solid 1px #4B4A4E; 2431 | text-align: center; 2432 | z-index: 20; 2433 | } 2434 | 2435 | aside.drawer header:before { 2436 | opacity: 0.75; 2437 | position: absolute; 2438 | pointer-events: none; 2439 | top: 100%; 2440 | height: 40px; 2441 | margin-top: 1px; 2442 | background-image: -webkit-linear-gradient(#393536 0%, rgba(48, 46, 51, 0) 100%); 2443 | background-image: -o-linear-gradient(#393536 0%, rgba(48, 46, 51, 0) 100%); 2444 | background-image: linear-gradient(#393536 0%, rgba(48, 46, 51, 0) 100%); 2445 | } 2446 | 2447 | aside.drawer article { 2448 | position: relative; 2449 | z-index: 10; 2450 | } 2451 | 2452 | aside.drawer article:before, 2453 | aside.drawer article:after { 2454 | position: fixed; 2455 | pointer-events: none; 2456 | display: none; 2457 | } 2458 | 2459 | @media (min-width: 1025px) { 2460 | aside.drawer article { 2461 | height: 100%; 2462 | height: 100vh; 2463 | } 2464 | } 2465 | 2466 | aside.drawer article:after { 2467 | opacity: 0.75; 2468 | top: auto; 2469 | bottom: 0px; 2470 | height: 40px; 2471 | background-image: -webkit-linear-gradient(rgba(48, 46, 51, 0) 0%, #393536 100%); 2472 | background-image: -o-linear-gradient(rgba(48, 46, 51, 0) 0%, #393536 100%); 2473 | background-image: linear-gradient(rgba(48, 46, 51, 0) 0%, #393536 100%); 2474 | } 2475 | 2476 | @media (min-width: 1025px) { 2477 | aside.drawer article:after, 2478 | aside.drawer article:before { 2479 | display: block; 2480 | } 2481 | } 2482 | 2483 | aside.drawer h5 { 2484 | font-family: "BT Mono medium", "Helvetica Neue", Helvetica, Sans-serif; 2485 | color: #fff; 2486 | line-height: 1.3em; 2487 | font-size: 16px; 2488 | letter-spacing: .02em; 2489 | margin: 0 0 .9em; 2490 | } 2491 | 2492 | aside.drawer tr { 2493 | border-color: #4B4A4E; 2494 | } 2495 | 2496 | aside.drawer th, 2497 | aside.drawer td { 2498 | font-size: 12px; 2499 | } 2500 | 2501 | aside.drawer th { 2502 | color: #BABABD; 2503 | width: 45%; 2504 | } 2505 | 2506 | aside.drawer td { 2507 | color: #fff; 2508 | width: 55%; 2509 | } 2510 | 2511 | aside.drawer p { 2512 | color: #fff; 2513 | max-width: 22em; 2514 | } 2515 | 2516 | aside.drawer ::selection { 2517 | opacity: 1; 2518 | background: rgba(255, 255, 255, 0.99); 2519 | color: rgba(62, 60, 65, 0.99); 2520 | text-shadow: none; 2521 | } 2522 | -------------------------------------------------------------------------------- /static/css/app.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "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", 4 | "sources": ["vendor/_normalize.scss","base/_utility.scss","base/_fonts.scss","vendor/bourbon/css3/_keyframes.scss","base/_animations.scss","vendor/bourbon/addons/_prefixer.scss","base/_base.scss","base/_variables.scss","base/_mixins.scss","base/_layout.scss","vendor/bourbon/css3/_flex-box.scss","components/_buttons.scss","components/_forms.scss","components/_modals.scss","components/_header.scss","components/_notices.scss","components/_tables.scss","modules/_checkout.scss","modules/_dropin.scss","modules/_response.scss","modules/_drawer.scss"], 5 | "names": [], 6 | "file": "app.css" 7 | } -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Bold.eot -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Bold.woff -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Bold.woff2 -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Medium.eot -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Medium.woff -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Medium.woff2 -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Regular.eot -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Regular.woff -------------------------------------------------------------------------------- /static/fonts/bt-mono/bt-mono-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/bt-mono/bt-mono-Regular.woff2 -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Bold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Bold-webfont.ttf -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Light-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Light-webfont.ttf -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Regular-webfont.ttf -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Semibold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Semibold-webfont.eot -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Semibold-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Semibold-webfont.ttf -------------------------------------------------------------------------------- /static/fonts/open-sans/OpenSans-Semibold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/fonts/open-sans/OpenSans-Semibold-webfont.woff -------------------------------------------------------------------------------- /static/images/bt-drop-in-placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/images/bt-drop-in-placeholder.png -------------------------------------------------------------------------------- /static/images/cards/amex.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | amex 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /static/images/cards/discover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | discover 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /static/images/cards/visa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | visa 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /static/images/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | check 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/images/fail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | check copy 5 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/braintree/braintree_flask_example/ef09c691f1c41edcd5c2e68446c90a3efa18db7b/static/images/favicon.png -------------------------------------------------------------------------------- /static/images/paypal-demo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | paypal-demo 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /static/images/paypal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | paypal 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/images/pseudoshop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | PSEUDOSHOP Copy 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | PS 12 | E 13 | U 14 | D 15 | O 16 | S 17 | H 18 | O 19 | P 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /static/images/success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | check copy 3 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /static/javascript/demo.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | (function () { 4 | var amount = document.querySelector('#amount'); 5 | var amountLabel = document.querySelector('label[for="amount"]'); 6 | 7 | amount.addEventListener('focus', function () { 8 | amountLabel.className = 'has-focus'; 9 | }, false); 10 | amount.addEventListener('blur', function () { 11 | amountLabel.className = ''; 12 | }, false); 13 | })(); 14 | -------------------------------------------------------------------------------- /templates/checkouts/new.html: -------------------------------------------------------------------------------- 1 | {% extends 'layout.html' %} 2 | {% block content %} 3 | 4 |
5 |
6 | 7 |
8 |

Hi,
Let's test a transaction

9 |

10 | Make a test payment with Braintree using PayPal or a card 11 |

12 |
13 | 14 |
15 |
16 | 22 | 23 |
24 |
25 |
26 |
27 | 28 | 29 | 30 |
31 | 32 |
33 |
34 | 35 | 36 | 63 | {% endblock %} 64 | -------------------------------------------------------------------------------- /templates/checkouts/show.html: -------------------------------------------------------------------------------- 1 | {% extends 'layout.html' %} 2 | {% block content %} 3 | 4 |
5 |
6 |
7 |
8 | 9 |
10 | 11 |

{{ result['header'] }}

12 |
13 |

{{ result['message'] }}

14 |
15 | 16 |
17 | 18 | Test Another Transaction 19 | 20 |
21 |
22 |
23 |
24 | 25 | 156 | {% endblock %} 157 | -------------------------------------------------------------------------------- /templates/layout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | BraintreeFlaskExample 5 | 6 | 7 | 8 | 9 |
10 |
11 |
12 |
13 |
14 | PSEUDOSHOP 15 |
16 | 17 |
18 | Braintree 19 |
20 |
21 |
22 |
23 | 24 |
25 | {% with messages = get_flashed_messages() %} 26 | {% for message in messages %} 27 |
28 | {{ message }} 29 |
30 | {% endfor %} 31 | {% endwith %} 32 |
33 |
34 | 35 | 36 | {% block content %}{% endblock %} 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /test_app.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import unittest 3 | import mock 4 | import test_helpers 5 | 6 | import os 7 | import app 8 | import tempfile 9 | 10 | @mock.patch('braintree.client_token_gateway.ClientTokenGateway.generate', staticmethod(lambda: 'test_client_token')) 11 | @mock.patch('braintree.TransactionGateway.find', staticmethod(lambda x: test_helpers.MockObjects.TRANSACTION_SUCCESSFUL)) 12 | class AppTestCase(unittest.TestCase): 13 | 14 | def setUp(self): 15 | app.app.config['TESTING'] = True 16 | self.app = app.app.test_client() 17 | 18 | def test_checkouts_new_route_available(self): 19 | res = self.app.get('/checkouts/new') 20 | self.assertEqual(res.status_code, 200) 21 | 22 | def test_root_redirect_to_checkout(self): 23 | res = self.app.get('/') 24 | self.assertEqual(res.status_code, 302) 25 | self.assertIn('/checkouts/new', res.location) 26 | 27 | def test_checkout_contains_client_token(self): 28 | res = self.app.get('/checkouts/new') 29 | self.assertIn(b'var client_token = \'test_client_token\';', res.data) 30 | 31 | def test_checkout_contains_checkout_form(self): 32 | res = self.app.get('/checkouts/new') 33 | self.assertIn(b'