· 8 years ago · Sep 29, 2017, 07:22 PM
1
2
3<!doctype html>
4<html lang='en' class="">
5<head>
6 <title>
7
8 Humble Book Bundle: Cybersecurity presented by Wiley (pay what you want and help charity)
9
10</title>
11
12 <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
13 <meta name="application-name" content="Humble Bundle">
14 <meta name="msapplication-TileColor" content="rgb(218,222,230)">
15 <meta name="msapplication-TileImage" content="https://humblebundle-a.akamaihd.net/static/hashed/49bccd0f2050e5fcfc3c442b269d4ff47b038ed9.png">
16 <meta name='medium' content='news' />
17 <meta name="theme-color" content="rgb(73,79,92)">
18 <meta property='og:site_name' content='Humble Bundle' />
19 <meta property='og:type' content='website' />
20 <meta property="fb:app_id" content="101146256651042" />
21 <meta property="fb:profile_id" content="162315830478396" />
22 <meta property="fb:pages" content="162315830478396"><meta name='robots' content='noindex, nofollow'>
23
24 <meta name='og:image:width' content='1200'>
25 <meta name='og:image:height' content='630'>
26 <meta itemprop='image' content='https://humblebundle.imgix.net/misc/files/hashed/b3a575f3721ad7fc82416fef6aa9a2bc1ec3177f.png?auto=format&lossless=1&ixlib=python-0.2.0&s=716eb9b765d06783f32def6a5116d206' />
27 <meta name='title' content='Humble Book Bundle: Cybersecurity presented by Wiley'/>
28 <meta name='description' content='Pay what you want for cybersecurity ebooks and support charity!' />
29 <meta property='og:url' content='https://www.humblebundle.com/books/cybersecurity-wiley'/>
30 <meta property='og:title' content='Humble Book Bundle: Cybersecurity presented by Wiley'/>
31 <meta property='og:description' content='Pay what you want for cybersecurity ebooks and support charity!' />
32 <meta property='og:image' content='https://humblebundle.imgix.net/misc/files/hashed/b3a575f3721ad7fc82416fef6aa9a2bc1ec3177f.png?auto=format&lossless=1&ixlib=python-0.2.0&s=716eb9b765d06783f32def6a5116d206' />
33 <link rel='image_src' href='https://humblebundle.imgix.net/misc/files/hashed/b3a575f3721ad7fc82416fef6aa9a2bc1ec3177f.png?auto=format&lossless=1&ixlib=python-0.2.0&s=716eb9b765d06783f32def6a5116d206' />
34 <meta name="twitter:card" content="summary_large_image" />
35 <meta name="twitter:site" content="@humble" />
36 <meta name="twitter:title" content="Humble Book Bundle: Cybersecurity presented by Wiley" />
37 <meta name="twitter:description" content="Pay what you want for cybersecurity ebooks and support charity!" />
38 <meta name="twitter:image" content="https://humblebundle.imgix.net/misc/files/hashed/a1b497a33b09ca5ed2a98ffaa05bb5ddc05fcf0b.png?auto=format&lossless=1&ixlib=python-0.2.0&s=dc028671827dd4debafa21d595065da3" />
39 <meta name="twitter:url" content="https://www.humblebundle.com/books/cybersecurity-wiley" />
40
41 <link rel="apple-touch-icon" sizes="144x144" href="https://humblebundle-a.akamaihd.net/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png">
42 <link rel="icon" type="image/png" sizes="16x16" href="https://humblebundle-a.akamaihd.net/static/hashed/4c8bbc6fc7b2b8a9fa21e895afe1157188e28bfb.png">
43 <link rel="icon" type="image/png" sizes="32x32" href="https://humblebundle-a.akamaihd.net/static/hashed/46cf2ed85a0641bfdc052121786440c70da77d75.png">
44 <link rel="shortcut icon" href="https://humblebundle-a.akamaihd.net/static/hashed/47e474eed38083df699b7dfd8d29d575e3398f1e.ico">
45 <link rel="search" type="application/opensearchdescription+xml" title="Humble Bundle Search" href="https://humblebundle-a.akamaihd.net/static/hashed/6606d9a78e51b66308bfa309bcba0b60395dd5e5.xml" />
46 <link rel='alternate' type='application/rss+xml' title='Humble Mumble' href='http://blog.humblebundle.com/rss' />
47
48
49 <style>
50
51 .button { border: none; border-radius: 3px; color: white !important; cursor: pointer; display: inline-block; font-size: 14px; line-height: 26px; margin: 0; padding: 0px 10px; text-decoration: none; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); transition: box-shadow 0.2s ease, background 0.2s ease; }
52.button.light-background { box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.1), inset 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 2px 0px 0px rgba(255, 255, 255, 0.2); }
53.button.dark-background { box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), 0px 1px 2px 0px rgba(0, 0, 0, 0.2), inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2); }
54.button:focus { outline: none; }
55.button:active { box-shadow: inset 0px 1px 2px 0px rgba(0, 0, 0, 0.2), inset 0px 0px 0px 1px rgba(0, 0, 0, 0.2); }
56.button.large { box-sizing: border-box; line-height: 46px; font-size: 18px; padding: 0 20px; margin-top: 1px; }
57.button.blue { background-image: linear-gradient(-180deg, #4dc4ff 0%, #17a1e6 100%); }
58.button.blue:hover { background-image: linear-gradient(-180deg, #80d4ff 0%, #19b2ff 100%); }
59.button.blue:active { background: #148fcc; }
60.button.red { background-image: linear-gradient(-180deg, #ff5244 0%, #e62217 100%); }
61.button.red:hover { background-image: linear-gradient(-180deg, #ff8280 0%, #ff0b0e 100%); }
62.button.red:active { background: #148fcc; }
63.button.green { background-color: #97b147; background-image: linear-gradient(-180deg, #97b147 0%, #7e992e 100%); }
64.button.green:hover { background-image: linear-gradient(-180deg, #adcc52 0%, #93b336 100%); }
65.button.green:active { background: #7e992e; }
66.button.gray { background-color: #bbb; background-image: linear-gradient(-180deg, #bbb 0%, #aaa 100%); }
67.button.gray:hover { background-image: linear-gradient(-180deg, #bbb 0%, #aaa 100%); }
68.button.gray:active { background: #999; }
69.button.disabled { opacity: 0.5; cursor: default; pointer-events: none; }
70
71.plain-oval, .gray-oval, .round-active-button { padding: 5px 10px; border: 1px solid #898e97; border-radius: 18px; background: white; color: black; font-weight: bold; text-align: center; font-size: 14px; display: inline-block; }
72.plain-oval:focus, .gray-oval:focus, .round-active-button:focus { outline: none; }
73
74.gray-oval, .round-active-button { background-color: #a1a7b2; color: white; text-shadow: 1px 1px #898e97; }
75
76.round-active-button { cursor: pointer; background: linear-gradient(-180deg, #97b147 0%, #7e992e 100%); text-decoration: none; color: white !important; }
77.round-active-button:hover, .round-active-button:focus { filter: brightness(1.1); }
78
79.fixed-width-button { width: 100px; }
80
81.flat-button { border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 5px; display: inline-block; background-color: transparent; color: white; padding: 0.5em 1em; font-weight: bold; text-align: center; text-decoration: none; transition: background-color 0.1s ease-in-out; }
82.flat-button.disabled { opacity: 0.5; cursor: default; pointer-events: none; }
83.flat-button.large-button { font-size: 1.15em; }
84.flat-button.larger-button { font-size: 1.25em; padding: 0.85em 1.75em; }
85.flat-button.green { background-color: #97b147; }
86.flat-button.green:hover { background-color: #acc368; }
87.flat-button.blue { background-color: #17a1e5; }
88.flat-button.blue:hover { background-color: #43b4ec; }
89.flat-button.red { background-color: #cb272c; }
90.flat-button.red:hover { background-color: #dc494d; }
91.flat-button.gray { background-color: #757b86; }
92.flat-button.gray:hover { background-color: #90959e; }
93
94.subtab-button { border-radius: 3px; font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; font-weight: bold; font-size: 14px; line-height: 17px; padding: 14px; text-decoration: none; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.2); }
95.subtab-button.grey { box-shadow: inset 0px 2px 0px 0px rgba(255, 255, 255, 0.2), inset 0px -2px 0px 0px rgba(0, 0, 0, 0.5); background-image: linear-gradient(-180deg, #A1A7B2 0%, #7B818C 100%); color: #FFFFFF; }
96.subtab-button.orange { box-shadow: inset 0px -2px 0px 0px rgba(255, 255, 255, 0.2), inset 0px 2px 0px 0px rgba(0, 0, 0, 0.2); background-image: linear-gradient(0deg, #FFAF61 0%, #EF9741 100%); color: #FFF3DD; }
97.subtab-button:hover, .subtab-button:focus { filter: brightness(1.1); }
98
99.simple-payment-button { outline: none; background: none; border-radius: 3px; border: none; box-shadow: inset 0px 0px 0px 1px #3b3e48; color: #494f5c; cursor: pointer; display: inline-block; line-height: 18px; padding: 10px 15px; text-decoration: none; margin-right: 10px; transition: all, 0.1s; background: #e4e7ed; }
100.simple-payment-button:focus { outline: none; }
101.simple-payment-button:hover, .simple-payment-button:active { background: #f3f5f7; }
102
103.payment-button { outline: none; background: none; border-radius: 3px; border: none; box-shadow: inset 0px 0px 0px 1px #3b3e48; color: #494f5c; cursor: pointer; display: inline-block; line-height: 18px; padding: 10px 15px; text-decoration: none; margin-right: 10px; transition: all, 0.1s; }
104.payment-button:focus { outline: none; }
105.payment-button:hover { box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.1), inset 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 2px 0px 0px rgba(255, 255, 255, 0.2); }
106.payment-button:active { box-shadow: inset 0px 1px 2px 0px rgba(0, 0, 0, 0.2), inset 0px 0px 0px 1px rgba(0, 0, 0, 0.2); }
107.payment-button i { vertical-align: middle; }
108
109.stripe-payment-button { background-image: linear-gradient(#4dc4ff, #17a1e6); color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.1), inset 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 2px 0px 0px rgba(255, 255, 255, 0.2); }
110.stripe-payment-button:hover { background-image: linear-gradient(#80d4ff, #19b2ff); }
111.stripe-payment-button:active { background: #148fcc; }
112.stripe-payment-button .hb-stripe { font-size: 18px; margin-right: 4px; }
113
114.paypal-payment-button { background-image: linear-gradient(#ffebc1, #ffaa02); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.1), inset 0px 0px 0px 1px #c68200, inset 0px 2px 0px 0px rgba(255, 255, 255, 0.6); padding-right: 10px; }
115.paypal-payment-button:hover { background-image: linear-gradient(#fff4db, #ffbc36); }
116.paypal-payment-button:active { background: #e69a02; }
117.paypal-payment-button img { vertical-align: middle; }
118
119.amazon-payment-button { background-image: linear-gradient(#ffe8ab, #f5c747); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.1), inset 0px 0px 0px 1px #b38b22, inset 0px 2px 0px 0px rgba(255, 255, 255, 0.6); }
120.amazon-payment-button:hover { background-image: linear-gradient(#ffeebf, #ffd359); }
121.amazon-payment-button:active { background: #d9b03f; }
122.amazon-payment-button .hb-amazon { font-size: 18px; margin-right: 4px; }
123
124.bbm-modal { background: #3B3E48; color: white; font-size: 14px; font-weight: normal; box-shadow: 0 0 6px rgba(0, 0, 0, 0.6), 0 1px 2px rgba(0, 0, 0, 0.9); }
125
126.bbm-wrapper { background: rgba(0, 0, 0, 0.1); position: absolute; }
127
128/* Modal positioning */
129.bbm-wrapper { box-sizing: border-box; left: 0; top: 0; width: 100%; height: 100%; z-index: 100; padding: 0 10px 0 10px; text-align: left; overflow: auto; }
130
131.bbm-wrapper * { box-sizing: border-box; }
132
133.bbm-modal { border-radius: 3px; margin: auto; margin-bottom: 40px; width: auto; max-width: 550px; }
134
135.bbm-views { width: 100%; box-sizing: border-box; }
136
137.generic-bbm-views { width: 100%; }
138
139/* BLOCKS */
140.bbm-modal__topbar, .bbm-modal__bottombar { padding: 0 30px; }
141
142.bbm-modal__topbar { border-bottom: 1px solid rgba(0, 0, 0, 0.1); border-radius: 3px 3px 0 0; padding: 10px 30px; background: #272C33; font-weight: bold; font-size: 16px; margin-bottom: 30px; }
143.bbm-modal__topbar i { margin-right: 10px; }
144.bbm-modal__topbar > ul { list-style: none; text-align: center; padding: 0; margin: 0; }
145
146.bbm-modal__tab { display: inline-block; padding: 15px 10px; }
147.bbm-modal__tab a { font-size: 16px; font-weight: bold; color: #999999; }
148.bbm-modal__tab a:hover, .bbm-modal__tab a.active { color: #222222; }
149
150.bbm-modal__title { padding: 20px 30px; margin: 0; line-height: 1em; color: #312d3a; }
151
152.bbm-modal__section { padding: 0 30px; font-size: 14px; font-weight: normal; line-height: 26px; color: white; }
153.bbm-modal__section p:last-child { padding: 0; margin-bottom: 0; }
154.bbm-modal__section a { color: white; }
155.bbm-modal__section h3 { margin: 0; font-size: 20px; line-height: 1em; }
156
157.bbm-modal__bottombar { border-top: 1px solid rgba(0, 0, 0, 0.1); padding: 18px; text-align: right; margin-top: 30px; }
158
159/* MODULES */
160.bbm-group { content: ""; display: table; clear: both; }
161
162.bbm-button { display: inline-block; color: rgba(49, 45, 58, 0.8); text-decoration: none; font-size: 14px; font-weight: 500; position: relative; line-height: 1em; padding: 10px 14px; border-radius: 3px; background: #fcfcfc; background-image: -o-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: -moz-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: -webkit-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: -ms-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); -moz-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.2); }
163.bbm-button.inactive { opacity: 0.5; pointer-events: none; }
164.bbm-button:active { background-image: -o-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: -moz-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: -webkit-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: -ms-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); -moz-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.2); }
165
166/* ANIMATIONS */
167/* Open modal */
168@-webkit-keyframes bbm-open { 0% { -webkit-transform: matrix(0.99126, 0, 0, 0.99126, 0, 43.8813); opacity: 0.1259; }
169 4% { -webkit-transform: matrix(0.99295, 0, 0, 0.99295, 0, 45.06809); opacity: 0.29544; }
170 8% { -webkit-transform: matrix(0.99467, 0, 0, 0.99467, 0, 46.26922); opacity: 0.46703; }
171 12% { -webkit-transform: matrix(0.99619, 0, 0, 0.99619, 0, 47.33355); opacity: 0.61908; }
172 16% { -webkit-transform: matrix(0.99743, 0, 0, 0.99743, 0, 48.19991); opacity: 0.74284; }
173 20% { -webkit-transform: matrix(0.99837, 0, 0, 0.99837, 0, 48.86067); opacity: 0.83724; }
174 24% { -webkit-transform: matrix(0.99905, 0, 0, 0.99905, 0, 49.33658); opacity: 0.90523; }
175 28% { -webkit-transform: matrix(0.99952, 0, 0, 0.99952, 0, 49.66049); opacity: 0.9515; }
176 32% { -webkit-transform: matrix(0.99981, 0, 0, 0.99981, 0, 49.8675); opacity: 0.98107; }
177 36% { -webkit-transform: matrix(0.99999, 0, 0, 0.99999, 0, 49.98966); opacity: 0.99852; }
178 40% { -webkit-transform: matrix(1.00008, 0, 0, 1.00008, 0, 50.05361); opacity: 1.00766; }
179 44% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.08); opacity: 1.01143; }
180 48% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08394); opacity: 1.01199; }
181 52% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.07589); opacity: 1.01084; }
182 56% { -webkit-transform: matrix(1.00009, 0, 0, 1.00009, 0, 50.06265); opacity: 1.00895; }
183 60% { -webkit-transform: matrix(1.00007, 0, 0, 1.00007, 0, 50.04833); opacity: 1.0069; }
184 64% { -webkit-transform: matrix(1.00005, 0, 0, 1.00005, 0, 50.03518); opacity: 1.00503; }
185 68% { -webkit-transform: matrix(1.00004, 0, 0, 1.00004, 0, 50.02421); opacity: 1.00346; }
186 72% { -webkit-transform: matrix(1.00002, 0, 0, 1.00002, 0, 50.01567); opacity: 1.00224; }
187 76% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00941); opacity: 1.00134; }
188 80% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00506); opacity: 1.00072; }
189 84% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.00223); opacity: 1.00032; }
190 88% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.0005); opacity: 1.00007; }
191 92% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99956); opacity: 0.99994; }
192 96% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99913); opacity: 0.99988; }
193 100% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50); opacity: 1; } }
194.bbm-modal--open { -webkit-animation-duration: 0.3s; -webkit-animation-name: bbm-open; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
195
196/* Open a stacked modal */
197@-webkit-keyframes bbm-stacked { 0% { -webkit-transform: matrix(0.99874, 0, 0, 0.99874, 0, 49.1187); opacity: 0.93705; }
198 4% { -webkit-transform: matrix(0.99705, 0, 0, 0.99705, 0, 47.93192); opacity: 0.85228; }
199 8% { -webkit-transform: matrix(0.99533, 0, 0, 0.99533, 0, 46.73078); opacity: 0.76648; }
200 12% { -webkit-transform: matrix(0.99381, 0, 0, 0.99381, 0, 45.66645); opacity: 0.69046; }
201 16% { -webkit-transform: matrix(0.99257, 0, 0, 0.99257, 0, 44.80009); opacity: 0.62858; }
202 20% { -webkit-transform: matrix(0.99163, 0, 0, 0.99163, 0, 44.13933); opacity: 0.58138; }
203 24% { -webkit-transform: matrix(0.99095, 0, 0, 0.99095, 0, 43.66342); opacity: 0.54739; }
204 28% { -webkit-transform: matrix(0.99049, 0, 0, 0.99049, 0, 43.33951); opacity: 0.52425; }
205 32% { -webkit-transform: matrix(0.99019, 0, 0, 0.99019, 0, 43.1325); opacity: 0.50946; }
206 36% { -webkit-transform: matrix(0.99002, 0, 0, 0.99002, 0, 43.01034); opacity: 0.50074; }
207 40% { -webkit-transform: matrix(0.98992, 0, 0, 0.98992, 0, 42.94639); opacity: 0.49617; }
208 44% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92001); opacity: 0.49429; }
209 48% { -webkit-transform: matrix(0.98988, 0, 0, 0.98988, 0, 42.91606); opacity: 0.494; }
210 52% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92411); opacity: 0.49458; }
211 56% { -webkit-transform: matrix(0.98991, 0, 0, 0.98991, 0, 42.93736); opacity: 0.49553; }
212 60% { -webkit-transform: matrix(0.98993, 0, 0, 0.98993, 0, 42.95167); opacity: 0.49655; }
213 64% { -webkit-transform: matrix(0.98995, 0, 0, 0.98995, 0, 42.96482); opacity: 0.49749; }
214 68% { -webkit-transform: matrix(0.98997, 0, 0, 0.98997, 0, 42.97579); opacity: 0.49827; }
215 72% { -webkit-transform: matrix(0.98998, 0, 0, 0.98998, 0, 42.98433); opacity: 0.49888; }
216 76% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99059); opacity: 0.49933; }
217 80% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99494); opacity: 0.49964; }
218 84% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.99777); opacity: 0.49984; }
219 88% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.9995); opacity: 0.49996; }
220 92% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00044); opacity: 0.50003; }
221 96% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00088); opacity: 0.50006; }
222 100% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43); opacity: 0.5; } }
223.bbm-modal--stacked { -webkit-animation-duration: 0.43333s; -webkit-animation-name: bbm-stacked; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
224
225/* destroy a stacked modal */
226@-webkit-keyframes bbm-stacked-reverse { 0% { -webkit-transform: matrix(0.99123, 0, 0, 0.99123, 0, 43.86266); opacity: 0.56162; }
227 4% { -webkit-transform: matrix(0.99293, 0, 0, 0.99293, 0, 45.05306); opacity: 0.64665; }
228 8% { -webkit-transform: matrix(0.99465, 0, 0, 0.99465, 0, 46.25785); opacity: 0.7327; }
229 12% { -webkit-transform: matrix(0.99618, 0, 0, 0.99618, 0, 47.32543); opacity: 0.80896; }
230 16% { -webkit-transform: matrix(0.99742, 0, 0, 0.99742, 0, 48.19443); opacity: 0.87103; }
231 20% { -webkit-transform: matrix(0.99837, 0, 0, 0.99837, 0, 48.8572); opacity: 0.91837; }
232 24% { -webkit-transform: matrix(0.99905, 0, 0, 0.99905, 0, 49.33456); opacity: 0.95247; }
233 28% { -webkit-transform: matrix(0.99951, 0, 0, 0.99951, 0, 49.65946); opacity: 0.97568; }
234 32% { -webkit-transform: matrix(0.99981, 0, 0, 0.99981, 0, 49.8671); opacity: 0.99051; }
235 36% { -webkit-transform: matrix(0.99999, 0, 0, 0.99999, 0, 49.98963); opacity: 0.99926; }
236 40% { -webkit-transform: matrix(1.00008, 0, 0, 1.00008, 0, 50.05377); opacity: 1.00384; }
237 44% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08024); opacity: 1.00573; }
238 48% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08419); opacity: 1.00601; }
239 52% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.07612); opacity: 1.00544; }
240 56% { -webkit-transform: matrix(1.00009, 0, 0, 1.00009, 0, 50.06284); opacity: 1.00449; }
241 60% { -webkit-transform: matrix(1.00007, 0, 0, 1.00007, 0, 50.04848); opacity: 1.00346; }
242 64% { -webkit-transform: matrix(1.00005, 0, 0, 1.00005, 0, 50.03529); opacity: 1.00252; }
243 68% { -webkit-transform: matrix(1.00004, 0, 0, 1.00004, 0, 50.02428); opacity: 1.00173; }
244 72% { -webkit-transform: matrix(1.00002, 0, 0, 1.00002, 0, 50.01572); opacity: 1.00112; }
245 76% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00944); opacity: 1.00067; }
246 80% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00508); opacity: 1.00036; }
247 84% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.00223); opacity: 1.00016; }
248 88% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.0005); opacity: 1.00004; }
249 92% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99956); opacity: 0.99997; }
250 96% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99912); opacity: 0.99994; }
251 100% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50); opacity: 1; } }
252.bbm-modal--stacked-reverse { -webkit-animation-duration: 0.43333s; -webkit-animation-name: bbm-stacked-reverse; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
253
254/* destroy a modal */
255@-webkit-keyframes bbm-destroy { 0% { -webkit-transform: matrix(0.99874, 0, 0, 0.99874, 0, 49.1187); opacity: 0.8741; }
256 4% { -webkit-transform: matrix(0.99705, 0, 0, 0.99705, 0, 47.93192); opacity: 0.70456; }
257 8% { -webkit-transform: matrix(0.99533, 0, 0, 0.99533, 0, 46.73078); opacity: 0.53297; }
258 12% { -webkit-transform: matrix(0.99381, 0, 0, 0.99381, 0, 45.66645); opacity: 0.38092; }
259 16% { -webkit-transform: matrix(0.99257, 0, 0, 0.99257, 0, 44.80009); opacity: 0.25716; }
260 20% { -webkit-transform: matrix(0.99163, 0, 0, 0.99163, 0, 44.13933); opacity: 0.16276; }
261 24% { -webkit-transform: matrix(0.99095, 0, 0, 0.99095, 0, 43.66342); opacity: 0.09477; }
262 28% { -webkit-transform: matrix(0.99049, 0, 0, 0.99049, 0, 43.33951); opacity: 0.0485; }
263 32% { -webkit-transform: matrix(0.99019, 0, 0, 0.99019, 0, 43.1325); opacity: 0.01893; }
264 36% { -webkit-transform: matrix(0.99002, 0, 0, 0.99002, 0, 43.01034); opacity: 0.00148; }
265 40% { -webkit-transform: matrix(0.98992, 0, 0, 0.98992, 0, 42.94639); opacity: -0.00766; }
266 44% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92001); opacity: -0.01143; }
267 48% { -webkit-transform: matrix(0.98988, 0, 0, 0.98988, 0, 42.91606); opacity: -0.01199; }
268 52% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92411); opacity: -0.01084; }
269 56% { -webkit-transform: matrix(0.98991, 0, 0, 0.98991, 0, 42.93736); opacity: -0.00895; }
270 60% { -webkit-transform: matrix(0.98993, 0, 0, 0.98993, 0, 42.95167); opacity: -0.0069; }
271 64% { -webkit-transform: matrix(0.98995, 0, 0, 0.98995, 0, 42.96482); opacity: -0.00503; }
272 68% { -webkit-transform: matrix(0.98997, 0, 0, 0.98997, 0, 42.97579); opacity: -0.00346; }
273 72% { -webkit-transform: matrix(0.98998, 0, 0, 0.98998, 0, 42.98433); opacity: -0.00224; }
274 76% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99059); opacity: -0.00134; }
275 80% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99494); opacity: -0.00072; }
276 84% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.99777); opacity: -0.00032; }
277 88% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.9995); opacity: -7e -5; }
278 92% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00044); opacity: 6.0 e-05; }
279 96% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00088); opacity: 0.00012; }
280 100% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43); opacity: 0; } }
281.bbm-modal--destroy { -webkit-animation-duration: 0.43333s; -webkit-animation-name: bbm-destroy; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
282
283.curtain { display: none; opacity: 0.75; position: absolute; background: black; top: 0; bottom: 0; left: 0; right: 0; z-index: 10; }
284.curtain .dialogs { height: 0; padding-bottom: 56.25%; width: auto; margin: auto; }
285.curtain .dialogs.spinner, .curtain .dialogs.spinner img { width: 48px; display: none; }
286.curtain div.loading-bindle { display: block; width: 32; height: 26px; zoom: 3; margin: 0 auto 10px auto; background-position: -480px 0; }
287.curtain div.loading-bindle.f10 { background-position: -480px 0; }
288.curtain div.loading-bindle.f11 { background-position: -512px 0; }
289.curtain div.loading-bindle.f12 { background-position: -544px 0; }
290.curtain div.loading-bindle.f13 { background-position: -576px 0; }
291.curtain div.loading-bindle.f14 { background-position: -608px 0; }
292.curtain div.loading-bindle.f15 { background-position: -640px 0; }
293.curtain div.loading-bindle.f16 { background-position: -672px 0; }
294.curtain div.loading-bindle.f17 { background-position: -704px 0; }
295.curtain div.loading-bindle.f18 { background-position: -736px 0; }
296.curtain div.loading-bindle.f19 { background-position: -768px 0; }
297.curtain div.loading-bindle.f20 { background-position: -800px 0; }
298.curtain div.loading-bindle.f21 { background-position: -832px 0; }
299.curtain div.loading-bindle.f22 { background-position: -864px 0; }
300.curtain div.loading-bindle.f23 { background-position: -896px 0; }
301.curtain div.loading-bindle.f24 { background-position: -928px 0; }
302.curtain div.loading-bindle.f25 { background-position: 0px 0; }
303.curtain div.loading-bindle.f26 { background-position: -32px 0; }
304.curtain div.loading-bindle.f27 { background-position: -64px 0; }
305.curtain div.loading-bindle.f28 { background-position: -96px 0; }
306.curtain div.loading-bindle.f29 { background-position: -128px 0; }
307.curtain div.loading-bindle.f30 { background-position: -160px 0; }
308.curtain div.loading-bindle.f31 { background-position: -192px 0; }
309.curtain div.loading-bindle.f32 { background-position: -224px 0; }
310.curtain div.loading-bindle.f33 { background-position: -256px 0; }
311.curtain div.loading-bindle.f34 { background-position: -288px 0; }
312.curtain div.loading-bindle.f35 { background-position: -320px 0; }
313.curtain div.loading-bindle.f36 { background-position: -352px 0; }
314.curtain div.loading-bindle.f37 { background-position: -384px 0; }
315.curtain div.loading-bindle.f38 { background-position: -416px 0; }
316.curtain div.loading-bindle.f39 { background-position: -448px 0; }
317.curtain div.loading-bindle.f40 { background-position: -480px 0; }
318
319.cover { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; text-align: center; color: #fff; }
320.cover.start, .cover.load { cursor: pointer; font-size: 256px; display: none; }
321.cover.show { display: inline-block; }
322
323.progress { display: none; width: 80%; height: 260px; margin: auto; text-align: center; }
324.progress .progress-bar { background: #202226; border: 1px solid #323641; height: 16px; overflow: hidden; border-radius: 3px; position: relative; padding: 4px; width: 100%; }
325.progress .progress-bar .progress-done { background-image: linear-gradient(to right, #C82931 11%, #A9171C 100%); border: 1px solid #282C34; height: 14px; border-radius: 3px; float: left; }
326.progress .status, .progress .unsupported { line-height: 20px; color: #FFF; margin-top: 10px; width: 100%; display: block; }
327.progress .demo-message { color: #FFF; }
328
329.modal-holder label { display: block; }
330.modal-holder .controls { line-height: 40px; margin-top: 10px; }
331.modal-holder .controls .button { display: inline-block; }
332.modal-holder .button { margin: 5px; padding: 5px 20px; }
333.modal-holder .button.green, .modal-holder .button.red, .modal-holder .button.gray { color: white !important; border-radius: 3px; border: 0px solid rgba(0, 0, 0, 0.2); box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.2), inset 0px 1px 0px 0px rgba(255, 255, 255, 0.2); }
334.modal-holder .button.green { background: #97B147; }
335.modal-holder .button.red { background: #E62217; }
336.modal-holder .button.gray { background: #A1A7B2; }
337
338div.loading-bindle { display: block; width: 32; height: 26px; zoom: 3; margin: 0 auto 10px auto; background-position: -480px 0; }
339div.loading-bindle.f10 { background-position: -480px 0; }
340div.loading-bindle.f11 { background-position: -512px 0; }
341div.loading-bindle.f12 { background-position: -544px 0; }
342div.loading-bindle.f13 { background-position: -576px 0; }
343div.loading-bindle.f14 { background-position: -608px 0; }
344div.loading-bindle.f15 { background-position: -640px 0; }
345div.loading-bindle.f16 { background-position: -672px 0; }
346div.loading-bindle.f17 { background-position: -704px 0; }
347div.loading-bindle.f18 { background-position: -736px 0; }
348div.loading-bindle.f19 { background-position: -768px 0; }
349div.loading-bindle.f20 { background-position: -800px 0; }
350div.loading-bindle.f21 { background-position: -832px 0; }
351div.loading-bindle.f22 { background-position: -864px 0; }
352div.loading-bindle.f23 { background-position: -896px 0; }
353div.loading-bindle.f24 { background-position: -928px 0; }
354div.loading-bindle.f25 { background-position: 0px 0; }
355div.loading-bindle.f26 { background-position: -32px 0; }
356div.loading-bindle.f27 { background-position: -64px 0; }
357div.loading-bindle.f28 { background-position: -96px 0; }
358div.loading-bindle.f29 { background-position: -128px 0; }
359div.loading-bindle.f30 { background-position: -160px 0; }
360div.loading-bindle.f31 { background-position: -192px 0; }
361div.loading-bindle.f32 { background-position: -224px 0; }
362div.loading-bindle.f33 { background-position: -256px 0; }
363div.loading-bindle.f34 { background-position: -288px 0; }
364div.loading-bindle.f35 { background-position: -320px 0; }
365div.loading-bindle.f36 { background-position: -352px 0; }
366div.loading-bindle.f37 { background-position: -384px 0; }
367div.loading-bindle.f38 { background-position: -416px 0; }
368div.loading-bindle.f39 { background-position: -448px 0; }
369div.loading-bindle.f40 { background-position: -480px 0; }
370
371.modal-gallery-wrapper { overflow: auto; margin: auto; height: 300px; width: 450px; background: #3b3e48; padding: 10px; }
372.modal-gallery-wrapper a { text-decoration: none; display: inline-block; color: white; }
373.modal-gallery-wrapper .grid-item { display: inline-block; position: relative; background: black; width: 200px; height: 150px; margin: 2px; }
374.modal-gallery-wrapper .grid-item .content { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; width: 100%; max-height: 100%; }
375.modal-gallery-wrapper .grid-item.take-screenshot:hover { background: #ccc; color: black; cursor: pointer; }
376.modal-gallery-wrapper .grid-item.take-screenshot .content { top: 43%; text-align: center; }
377.modal-gallery-wrapper .grid-item.pending-image-spinner img { margin: auto; position: absolute; top: 0; right: 0; bottom: 0; left: 0; }
378.modal-gallery-wrapper .grid-item .hover-wrapper { position: absolute; margin: auto; top: 0; bottom: 0; left: 0; right: 0; background: rgba(0, 0, 0, 0.5); font-size: 18px; text-align: center; display: none; }
379.modal-gallery-wrapper .grid-item .hover-wrapper .shares { position: absolute; top: 40%; left: 0; right: 0; margin: auto; cursor: pointer; }
380.modal-gallery-wrapper .grid-item .hover-wrapper .shares .hb-twitter:hover { color: #55acee; }
381.modal-gallery-wrapper .grid-item .hover-wrapper .shares .hb-facebook:hover { color: #3b5998; }
382.modal-gallery-wrapper .grid-item .hover-wrapper .delete-screenshot { position: absolute; bottom: 5px; right: 5px; cursor: pointer; }
383.modal-gallery-wrapper .grid-item:hover .hover-wrapper { display: block; }
384
385.sharing-modal-body { font-size: 16px; }
386.sharing-modal-body input[type=text] { padding: 10px; border: none; border-radius: 3px; width: 100%; }
387
388.asm-frame { overflow: hidden; display: block; }
389.asm-frame iframe { display: block; }
390
391.asm-switcher { position: relative; border-radius: 3px; white-space: nowrap; padding: 0; margin: 0; text-align: left; }
392.asm-switcher .iframe-holder { position: relative; height: 0; width: 100%; padding-bottom: 56.25%; }
393.asm-switcher .curtain, .asm-switcher .dialogs { position: absolute; top: 0; left: 0; right: 0; bottom: 0; }
394.asm-switcher .curtain { opacity: 1; }
395.asm-switcher h1 { margin-bottom: 10px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 200; font-size: 20px; color: #4A4C45; line-height: 24px; }
396.asm-switcher .toggle-collapsable { position: absolute; cursor: pointer; right: 5px; top: 5px; display: none; }
397.asm-switcher .toggle-collapsable.visible { display: block; }
398.asm-switcher .collapsable { overflow: hidden; max-height: 0; transition: .5s max-height; -webkit-transition: .5s max-height; -moz-transition: .5s max-height; -o-transition: .5s max-height; }
399.asm-switcher .collapsable.open { max-height: 3000px; }
400.asm-switcher div.game-button-panel { height: auto; }
401.asm-switcher div.game-button-panel div.game-list { padding: 0; margin: 15px -5px 0 -5px; display: flex; flex-direction: row; flex-wrap: wrap; width: auto; }
402.asm-switcher div.game-button-panel div.game-list div.game-button { flex-grow: 0; cursor: pointer; text-decoration: none; padding: 0; border-radius: 3px; background: #A1A7B2; margin: 5px; width: 172px; -moz-box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15); box-shadow: inset 0px 0px 0px 1px rgba(0, 0, 0, 0.15); }
403.asm-switcher div.game-button-panel div.game-list div.game-button p { overflow: hidden; text-overflow: ellipsis; font-family: Helvetica; font-weight: bold; font-size: 14px; color: #FFFFFF; line-height: 17px; text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2); padding: 12px 16px 7px 16px; margin: 0; }
404.asm-switcher div.game-button-panel div.game-list div.game-button.selected { background: #4D5462; position: relative; }
405.asm-switcher div.game-button-panel div.game-list div.game-button .progress-bar { width: 100%; background: #3B3E48; height: 5px; overflow: hidden; border-radius: 10px; visibility: hidden; position: relative; z-index: 100; }
406.asm-switcher div.game-button-panel div.game-list div.game-button .progress-bar .progress-done { background-image: linear-gradient(to right, #C82931 11%, #A9171C 100%); border: 1px solid #202226; height: 3px; border-radius: 6px; float: left; }
407.asm-switcher .player-panel { height: auto; position: relative; white-space: normal; background: black; }
408.asm-switcher .player-panel:after { content: ''; height: 42px; display: block; }
409.asm-switcher .rec-firefox-update { text-align: center; margin: 10px; }
410.asm-switcher .do-popout, .asm-switcher .do-confirm-close { position: absolute; cursor: pointer; color: #555; }
411.asm-switcher .do-popout { right: 0; top: 0; display: inline-block; }
412.asm-switcher .do-confirm-close { font-size: 24px; right: 20px; top: 20px; display: none; }
413.asm-switcher.popout { margin: auto; position: relative; background: #fff; padding: 30px 50px 30px 40px; z-index: 9999; }
414.asm-switcher.popout .toggle-collapsable { display: none; }
415.asm-switcher.popout .do-confirm-close { display: inline-block; }
416.asm-switcher.popout .do-popout { display: none; }
417
418.asm-switcher-embed { margin-bottom: 30px; }
419.asm-switcher-embed .asm-switcher.frame-only { border: 0; padding: 0; }
420
421.asm-user-page { background: #eee; border: 1px solid #ccc; border-radius: 3px; padding: 20px; margin-bottom: 30px; display: none; }
422.asm-user-page .toggle-collapsable { right: -13px; top: -13px; }
423.asm-user-page .collapsable { max-height: 0; }
424
425.asm-download-page { background: #fff; border-radius: 3px; border: 1px solid #ccc; padding: 20px; display: none; }
426.asm-download-page h1 { margin-top: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: bold; }
427.asm-download-page .toggle-collapsable { display: none; }
428.asm-download-page .toggle-collapsable.visible { display: none; }
429.asm-download-page .collapsable { height: auto; max-height: 3000px; }
430
431#asm-grayout { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: none; }
432
433body { overflow-x: auto !important; }
434/* Coupons */
435.library-coupon { width: 285px; margin-left: 5px; margin-right: 5px; margin-bottom: 20px; display: inline-block; border: 1px solid #E9E9E9; text-decoration: none; vertical-align: top; }
436
437.library-coupon-image { width: 100%; }
438
439.library-coupon-description { text-align: center; background: white; padding: 10px; }
440
441.library-coupon-human-name { font-size: 16px; font-weight: bold; }
442
443.library-coupon-expiration { color: red; font-size: 12px; width: 100%; margin-top: 3px; }
444
445.library-coupon-terms-and-conditions { margin-top: 3px; }
446
447.charity-item { width: 135px; padding: 35px; background-color: white; height: 80px; margin: 10px; }
448
449.charity-image-wrapper { position: relative; height: 100%; width: 100%; }
450.charity-image-wrapper img { max-height: 100%; max-width: 100%; width: auto; height: auto; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; }
451
452.charity-grid { display: flex; flex-wrap: wrap; justify-content: center; max-width: 1100px; padding: 10px; margin: auto; }
453@media (max-width: 590px) { .charity-grid { padding: 10px 0; }
454 .charity-grid .charity-item { width: 100px; margin: 5px; } }
455
456.charity-highlight { display: flex; flex-wrap: wrap; justify-content: center; margin: auto; padding: 10px; }
457.charity-highlight .charity-description { text-align: justify; width: 100%; margin-left: 40px; max-width: 300px; }
458.charity-highlight .charity-item { padding: 5px; width: 195px; height: 140px; }
459.charity-highlight p { line-height: 1.5; margin-bottom: 30px; }
460.charity-highlight h4 { line-height: 1; margin: 12px 0; text-align: left; }
461@media (max-width: 625px) { .charity-highlight .charity-description { margin-left: 0; width: 270px; }
462 .charity-highlight .charity-item { width: 200px; } }
463
464.no-feature { margin: auto; }
465.no-feature p { line-height: 1.5; }
466.no-feature .charity-button { text-align: center; }
467
468.display-modal { position: fixed; width: 100%; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 400; }
469
470.display-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(40, 44, 52, 0.98); z-index: 350; }
471
472.close-button { color: white; position: absolute; top: 10px; right: 10px; font-size: 24px; padding: 20px; }
473.close-button:hover { color: grey; cursor: pointer; }
474
475.display-modal-inside { margin: auto; padding: 50px; max-width: 100%; max-height: 100vh; box-sizing: border-box; }
476
477.charity { text-align: center; margin-top: 0; }
478.charity.supporting a { text-decoration: underline; }
479.charity img { vertical-align: middle; margin-top: -4px; display: inline-block; }
480.charity .charity-info, .charity .item-title { font-size: 16px; }
481.charity .charity-info { color: #fff; margin-bottom: 25px; }
482.charity .item-title { display: inline-block; text-align: right; margin-left: 10px; font-weight: normal; }
483
484.cyoc-holder { display: block; }
485
486.charity-selection { height: auto; }
487
488.slideout-expandable { border: 1px solid #24282f; margin-top: 10px; padding: 30px; }
489
490.charity-support { color: white; }
491.charity-support h4 { font-size: 22px; }
492.charity-support a { color: white; }
493
494.charity-item { position: relative; }
495
496.cyoc-holder .charity-highlight .charity-item { width: 255px; height: 175px; padding: 5px; }
497.cyoc-holder .charity-highlight .charity-item .charity-img { background-color: white; background-repeat: no-repeat; background-position: center; background-size: contain; height: 100%; width: 100%; }
498.cyoc-holder .charity-highlight .charity-description { max-width: 350px; text-align: left; }
499.cyoc-holder .charity-highlight p { font-size: 15px; }
500
501@media (max-width: 860px) { .cyoc-holder .charity-highlight { flex-direction: column; }
502 .cyoc-holder .charity-highlight .charity-item { margin: auto; }
503 .cyoc-holder .charity-highlight .charity-description { text-align: center; margin: auto; }
504 .cyoc-holder .charity-highlight h4 { text-align: center; } }
505.bottom-right { position: absolute; bottom: 10px; right: 10px; color: white; font-size: 24px; }
506.bottom-right .charity-edit { padding: 5px 10px; border: 2px solid white; background-color: rgba(0, 0, 0, 0.5); }
507.bottom-right .charity-edit:hover { background-color: rgba(0, 0, 0, 0.8); cursor: pointer; }
508
509@media (max-width: 500px) { .bottom-right { font-size: 16px; } }
510.charity-item.none-chosen { background-color: grey; border: 5px dashed white; }
511
512.display-modal-inside { color: white; overflow-y: scroll; }
513.display-modal-inside h1 { text-align: center; font-size: 28px; line-height: 4; }
514.display-modal-inside .charity-selection-view { max-width: 975px; margin: auto; }
515.display-modal-inside .charity-selection-view h2 { padding: 0px 5px; margin-bottom: 0px; line-height: 1; }
516.display-modal-inside .charity-selection-view button { background: grey; border-radius: 2px; border: none; padding: 4px 7px; text-transform: uppercase; font-weight: bold; letter-spacing: -0.01rem; margin-top: 10px; }
517
518.charity-page-link { padding-top: 30px; font-size: 20px; text-align: center; }
519.charity-page-link a { color: white; }
520
521.charity-item-wrapper { text-align: center; color: white; }
522
523.display-modal-inside .charity-list { display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 50px; }
524.display-modal-inside .charity-preview { margin: 10px; width: 130px; text-align: center; white-space: nowrap; }
525.display-modal-inside .charity-preview h4, .display-modal-inside .charity-preview h5 { text-overflow: ellipsis; overflow: hidden; line-height: 1; margin: 10px auto; }
526.display-modal-inside .charity-preview h4 { font-size: 15px; }
527.display-modal-inside .charity-preview .location { color: lightgrey; font-size: 10px; }
528@media screen and (max-width: 500px) { .display-modal-inside .charity-preview { margin: 5px auto; } }
529.display-modal-inside .charity-img { background-color: white; }
530.display-modal-inside .charity-name { margin-top: 10px; }
531.display-modal-inside .results-heading, .display-modal-inside .results-heading-disclaimer { text-align: center; }
532.display-modal-inside .results-heading { font-size: 24px; line-height: 1em; }
533.display-modal-inside .results-heading-disclaimer { color: lightgrey; font-size: 15px; }
534.display-modal-inside .pagination { text-align: right; }
535.display-modal-inside .partnership-line { text-align: right; padding: 5px; }
536.display-modal-inside .partnership-line a { color: white; }
537.display-modal-inside .charity-search { padding-bottom: 20px; position: relative; font-size: 14px; }
538.display-modal-inside .charity-search input, .display-modal-inside .charity-search label, .display-modal-inside .charity-search button { display: inline-block; margin-right: 10px; }
539.display-modal-inside .charity-search input, .display-modal-inside .charity-search select { border-radius: 3px; height: 31px; padding: 4px; box-sizing: border-box; border: 1px solid #ddd; margin-top: 4px; font-size: 14px; }
540.display-modal-inside .charity-search button { padding: 8px 30px; border-radius: 5px; margin: 5px; }
541.display-modal-inside .charity-search label { text-transform: uppercase; font-size: 10px; color: #a1a7b2; margin: 5px; letter-spacing: 1.25px; }
542.display-modal-inside .charity-search label::first-letter { margin-left: 2px; }
543.display-modal-inside .charity-search .query { position: relative; width: 350px; max-width: 100%; }
544.display-modal-inside .charity-search .query input { width: 100%; padding-left: 26px; color: #494f5c; }
545.display-modal-inside .charity-search .query i { position: absolute; bottom: 8px; left: 8px; font-size: 14px; color: #a1a7b2; }
546.display-modal-inside .charity-search .category select, .display-modal-inside .charity-search .country select, .display-modal-inside .charity-search .state select { width: 100%; display: inline-block; color: #494f5c; }
547.display-modal-inside .charity-search .category { width: 250px; }
548.display-modal-inside .charity-search .country { width: 210px; }
549.display-modal-inside .charity-search .state { display: none; }
550.display-modal-inside .charity-search .state.is-united-states, .display-modal-inside .charity-search .country.is-united-states { width: 100px; display: inline-block; }
551.display-modal-inside .select-charity .unselected-text { display: inline; }
552.display-modal-inside .select-charity .disallowed-text, .display-modal-inside .select-charity .selected-text, .display-modal-inside .select-charity .featured-text { display: none; }
553.display-modal-inside .select-charity.is-unselected-featured .featured-text { display: inline; }
554.display-modal-inside .select-charity.is-unselected-featured .selected-text, .display-modal-inside .select-charity.is-unselected-featured .unselected-text, .display-modal-inside .select-charity.is-unselected-featured .disallowed-text { display: none; }
555.display-modal-inside .select-charity.is-selected { background-color: #97b147; }
556.display-modal-inside .select-charity.is-selected .selected-text { display: inline; }
557.display-modal-inside .select-charity.is-selected .disallowed-text, .display-modal-inside .select-charity.is-selected .unselected-text, .display-modal-inside .select-charity.is-selected .featured-text { display: none; }
558.display-modal-inside .select-charity.is-disallowed { cursor: default; background: #333; }
559.display-modal-inside .select-charity.is-disallowed .disallowed-text { display: inline; color: #787878; }
560.display-modal-inside .select-charity.is-disallowed .selected-text, .display-modal-inside .select-charity.is-disallowed .unselected-text, .display-modal-inside .select-charity.is-disallowed .featured-text { display: none; }
561.display-modal-inside .select-charity.is-featured { cursor: default; background: #17A1E5; }
562.display-modal-inside .select-charity.is-featured .featured-text { display: inline; }
563.display-modal-inside .select-charity.is-featured .selected-text, .display-modal-inside .select-charity.is-featured .unselected-text, .display-modal-inside .select-charity.is-featured .disallowed-text { display: none; }
564
565.ch-main { padding-bottom: 75px; padding-top: 75px; }
566
567.admin-tiny-link i { position: relative; }
568
569#hibtext { margin-top: 0 !important; color: #cc0000; font-size: 20px !important; font-weight: bold; padding-top: 4px; line-height: 24px; }
570
571.center-wrapper { float: left; width: 100%; position: relative; }
572
573.center { overflow: visible; clear: left; float: left; position: relative; left: 50%; }
574
575/* spiel */
576#spiel { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75); line-height: 21px; font-size: 14px; }
577
578#spiel a { color: #5D801A; }
579
580#main { font-size: 12px; margin: 0 auto; text-shadow: none; width: 831px; }
581
582.whitebox-redux { background: white; box-sizing: border-box; padding: 20px 0; border: 1px solid #c7cbd4; border-radius: 5px; box-shadow: 0 1px 1px 0px #c7cbd4; position: relative; color: #4a4c45; width: 762px; margin: 7px auto 13px auto; }
583
584/* inner boxes */
585.whitebox { position: relative; color: #4a4c45; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); width: 762px; margin: 7px auto 13px auto; }
586
587.whitetop { position: absolute; top: 0; width: 762px; height: 20px; background: url("//humblebundle-a.akamaihd.net/static/hashed/112ab639e90490bc2dcee89740036e6ff20838f8.png") 0 0 no-repeat; }
588
589.whitemid { position: absolute; top: 20px; width: 762px; bottom: 20px; background: url("//humblebundle-a.akamaihd.net/static/hashed/835bbcaad6a563ba85fa91773af142691ff5f6e0.png"); }
590
591.whitebottom { position: absolute; bottom: 0; width: 762px; height: 20px; background: url("//humblebundle-a.akamaihd.net/static/hashed/112ab639e90490bc2dcee89740036e6ff20838f8.png") bottom no-repeat; }
592
593.whitecontent { position: relative; padding: 20px; /* if you change this, remember to change the keytabs top margin by the same amount */ }
594
595.whitecontent .hr { background: #e6e6e6; }
596
597.whitecontent.nopadding { padding-left: 0; padding-right: 0; }
598
599#dlplatform, #dltype, div.custominstructions { margin: 0 20px; }
600
601#dltype.only-one-button { display: none; }
602
603.whitecontent.nopadding .row { margin: 0 12px; }
604
605.expandorder { display: block; height: 44px; text-align: center; color: #5d801a; font-size: 16px; }
606
607.redeemsmallheading { width: 480px; margin: 0 auto; padding-bottom: 12px; text-align: center; font-size: 90%; font-weight: normal; }
608
609.keyredeemer { float: left; margin-right: 10px; margin-bottom: 16px; height: 28px; width: 111px; cursor: pointer; }
610
611.redeeminstructions { text-align: center; padding-bottom: 30px; }
612
613.onliveusukradio { padding-left: 127px; }
614
615.steam-profile { position: relative; top: -15px; right: -6px; text-align: right; }
616
617.steam-profile .account-text { display: inline-block; }
618
619.steam-profile .indicator { float: right; left: -40px; background: url("//humblebundle-a.akamaihd.net/static/hashed/e73d51c16b07d083026843ceda9c22056b9d04a2.gif") no-repeat; }
620
621.steam-profile .profile-pic { width: 32px; height: 32px; display: inline-block; vertical-align: bottom; margin-left: 10px; }
622
623.genericbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/aafd697db4950b99bc95a0ef740f10d7301eb437.png") no-repeat; }
624
625.activated .genericbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/7f9102778b07eec38f1ba5911c95c24d3aa98318.png") no-repeat; }
626
627.steambutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/4679a3c4d14fbda0fe37478d446d001fad44e3c1.png") no-repeat; }
628
629.activated .steambutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/7d32b8cb2ed51ab18ec0e5a40208afd4a41c988c.png") no-repeat; }
630
631.uplaybutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/4b3fd1c208843f91a063bec2349b526202a4fe6e.png") no-repeat; }
632
633.activated .uplaybutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/4ca5ac1bf3373babd5a508d6556f5f7fd6ad4b38.png") no-repeat; }
634
635.originbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/e76fbc1ccb8733279587f6038056cd3fdc0271a9.png") no-repeat; }
636
637.activated .originbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/3ff62f831583f243b65f8954c08f40702eed5912.png") no-repeat; }
638
639.ouyabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/e8916956991bdd418ccdb45e6dead81cae599a34.png") no-repeat; }
640
641.activated .ouyabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/cb5ea8b036c49c5f6466d97c37703016668df034.png") no-repeat; }
642
643.desurabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/97b4d580682444ec310e39480957a39d84a50106.png") no-repeat; }
644
645.activated .desurabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/72c7a91a612ceee5ceda77133c9d79bf66b8dec3.png") no-repeat; }
646
647.onlivebutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/e7426f51dea62e220deeb988794cb32e15c265ae.png") no-repeat; }
648
649.activated .onlivebutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/8c812b14676720a1c5541e5ff0084336f8ca952b.png") no-repeat; }
650
651.multiplayerbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/6f98857f10330e006847a2571bd2fcdd972da502.png") no-repeat; }
652
653.activated .multiplayerbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/20048fabc7a0a68316b0315f584c58ad95b17055.png") no-repeat; }
654
655.squareenix_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/ac97edf1d373f749576bab85be377698494478d9.png") no-repeat; }
656
657.activated .squareenix_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/3af19fcba4ca44990c78e1aebee17bbadd21afe7.png") no-repeat; }
658
659.bethesda_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/61a2c4c13f0b95b11aec7784356d325f1ad76223.png") no-repeat; }
660
661.activated .bethesda_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/80a34f59a907904dcb29c5e434affb9f88ee6fc6.png") no-repeat; }
662
663.telltalegames_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/c3c956701f7cbf7842d1fef8d713f829042dbfb4.png") no-repeat; }
664
665.activated .telltalegames_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/cfe22581a0a30154a85744ae2f58671af6b731b6.png") no-repeat; }
666
667.nintendo_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/32be74acd8de11c5a9a240c5ce3c00d0287b83a3.png") no-repeat; }
668
669.activated .nintendo_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/2a16694e165dc6e39f3e89f6eba6d1451d278f6a.png") no-repeat; }
670
671.soldout { visibility: hidden; }
672
673#papers-content a { color: #360; }
674
675.keyfield { width: 342px; padding: 0 4px; white-space: nowrap; height: 28px; color: #808080; text-align: center; line-height: 28px; font-size: 12px; float: left; background: url("//humblebundle-a.akamaihd.net/static/hashed/9e9017643ddecc7f2d3cd0032c577b88d96ce5e0.png") no-repeat; }
676
677.keyfield-content { overflow-x: auto; width: 340px; }
678
679.redeemholder { margin: 0 auto; width: 503px; }
680
681.giftbutton { padding-left: 6px; padding-top: 5px; float: left; cursor: pointer; }
682
683.redeemheading { text-align: center; font-size: 16px; padding-bottom: 18px; padding-top: 6px; width: 70%; margin: 0 auto; }
684
685.indicator { height: 16px; position: relative; top: 2px; width: 16px; }
686
687#steaminfo { background: url("//humblebundle-a.akamaihd.net/static/hashed/cceac795b8e3fb4e5ad5582e6bd7ac85ccda5839.png") no-repeat; height: 28px; width: 30px; position: absolute; top: 12px; left: 12px; display: block; }
688
689#inst a { color: #5d801a; }
690
691#inst { text-align: center; }
692
693.displaying .infotext { display: block; }
694
695.infotext { background: black; color: #fff; font-size: 12px; font-weight: normal; padding: 12px; text-shadow: none; width: 300px; display: none; position: absolute; top: 23px; line-height: 18px; right: -63px; }
696
697.infotitle { text-decoration: underline; }
698
699#moreinfolink { cursor: pointer; color: white; right: -107px; position: absolute; font-weight: bold; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.75); font-size: 14px; top: -1px; z-index: 30; }
700
701.key-expander .shrinkwrapper { display: none; }
702
703.key-expander.kexpanded .shrinkwrapper { display: block; }
704
705.shrinkwrapper { height: 23px; overflow: hidden; }
706
707.shrinkwrapper.expanded { height: auto; }
708
709.expandkeys { display: block; overflow: hidden; height: 22px; text-align: center; color: #5d801a !important; font-size: 16px; }
710
711#normal { width: 100%; margin-top: -7px; font-size: 12px; line-height: 12px; }
712
713#addorder.small { cursor: pointer; }
714
715#addorder .whitecontent { box-sizing: content-box; height: 22px; overflow: hidden; }
716
717#orderwrapper { bottom: -8px; left: 20px; overflow: hidden; position: absolute; right: 20px; top: 20px; }
718
719#expandorder { display: block; height: 44px; text-align: center; color: #5d801a; font-size: 16px; }
720
721a.slide-down-trigger { display: block; text-align: center; color: #5d801a; font-size: 16px; }
722
723.slide-down { padding-top: 20px; }
724
725.flexbtn .label { visibility: hidden; }
726
727.flexbtn { font-weight: bold; height: 28px; line-height: 28px; position: relative; margin-right: 12px; padding-left: 33px; float: left; margin-left: 8px; }
728
729.flexbtn .right { position: absolute; right: -12px; top: 0; bottom: 0; width: 12px; }
730
731.flexbtn.active .right { background-position: right; }
732
733.flexbtn .a { position: absolute; top: 0; left: 0; right: -12px; bottom: 0; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); color: #4a4c45 !important; text-decoration: none; padding-left: 33px; background: none; border: none; outline: none; }
734
735.streaming-video-player { margin: 25px; position: relative; top: 10px; text-align: center; }
736
737.selected-video-quality { background-color: #CACED8; cursor: pointer; }
738
739.video-quality-selector { border: 1px solid #BFC3CC; border-radius: 3px; cursor: pointer; display: inline-block; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: bold; padding: 5px; text-align: center; vertical-align: middle; width: 70px; }
740
741.flexbtn.active .a { text-shadow: 0 1px 0 white; }
742
743.flexbtn.noicon, .flexbtn.noicon a { padding-left: 6px; }
744
745.icon { position: absolute; }
746
747.mac .icon { left: 10px; top: 4px; height: 18px; width: 14px; background: url("//humblebundle-a.akamaihd.net/static/hashed/a010a63e8e934c3b8652c314f22422fd78375f87.png") no-repeat; }
748
749.windows .icon { left: 10px; top: 6px; height: 17px; width: 19px; background: url("//humblebundle-a.akamaihd.net/static/hashed/0caa53023b380142150807b45ed4e63b440db7a7.png") no-repeat; }
750
751.windows .a, .windows.flexbtn { padding-left: 38px; }
752
753.linux .icon { left: 10px; top: 6px; height: 17px; width: 14px; background: url("//humblebundle-a.akamaihd.net/static/hashed/6fdf9bdbf6874ddad9011dd07252cdc2e42e88be.png") no-repeat; }
754
755.android .icon { left: 8px; top: 5px; height: 19px; width: 15px; background: url("//humblebundle-a.akamaihd.net/static/hashed/12ad16b0169963dd8374c09a36d83b9628301797.png") no-repeat; }
756
757.audio .icon { left: 10px; top: 5px; height: 17px; width: 14px; background: url("//humblebundle-a.akamaihd.net/static/hashed/31ca574c537461526fe5e3882e1799d93fd3442a.png") no-repeat; }
758
759.audio .a, .audio.flexbtn { padding-left: 38px; }
760
761.ebook .icon { left: 10px; top: 5px; height: 17px; width: 14px; background: url("//humblebundle-a.akamaihd.net/static/hashed/2f8c311b2ad54c0996b6f2231ce69b52f9ef7b42.png") no-repeat; }
762
763.comedy .icon { left: 10px; top: 5px; height: 17px; width: 14px; background: url("//humblebundle-a.akamaihd.net/static/hashed/0ebb919bcdef9c3b5c7fb1dc19a416f8bfddfc1f.png") no-repeat; }
764
765.video .icon { left: 10px; top: 10px; height: 17px; width: 14px; background: url("//humblebundle-a.akamaihd.net/static/hashed/ac23ed56c286d1d8e284d7b0aa3046c8e20f00f1.png") no-repeat; }
766
767.vertical-rule { border-left: 1px solid black; width: 1px; height: 30px; margin-left: 15px; float: left; }
768
769.bittorrent .icon { left: 10px; top: 6px; height: 17px; width: 16px; background: url("//humblebundle-a.akamaihd.net/static/hashed/e17a19111dffdd17728c4f754dc5bb0e9dad2746.png") no-repeat; }
770
771.bittorrent .a, .flexbtn.bittorrent { padding-left: 35px; }
772
773.direct .icon { left: 10px; top: 6px; height: 17px; width: 16px; background: url("//humblebundle-a.akamaihd.net/static/hashed/19b899d281c429dfab8e55f4d81c5202cc5cb26d.png") no-repeat; }
774
775.direct .a, .direct.flexbtn { padding-left: 35px; }
776
777.hr { height: 1px; margin: 12px 0; background: #ccc; }
778
779.download.hr { clear: both; }
780
781.textlabel { float: left; height: 28px; line-height: 28px; width: 160px; text-align: right; }
782
783.dlplatform-list { overflow: auto; }
784
785.title a { text-decoration: none; font-weight: bold; }
786
787.subtitle { color: #4a4c45; font-weight: normal; font-size: 12px; line-height: normal; }
788
789.subtitle a { text-decoration: none; font-weight: normal; color: #4a4c45 !important; }
790
791.row { position: relative; }
792
793.stepoption { padding: 7px 0 7px 42px; font-weight: normal; position: relative; }
794
795/* key page */
796.downloads { float: right; width: 400px; }
797
798.downloads .flexbtn { margin-left: 0; min-width: 120px; text-align: center; }
799
800.newbuilds, .custominstructions { display: none; }
801
802.small .flexbtn { margin-left: 0; min-width: 69px; text-align: center; }
803
804.small .dldetails { width: 79px; }
805
806.download { float: right; margin-left: 14px; }
807
808.dldetails { clear: both; width: 130px; padding: 0 4px; }
809
810.dlsize { text-align: center; padding-top: 8px; font-size: 12px; font-weight: bold; }
811
812.dlsize.showmd5 { padding-top: 2px; }
813
814.dldate, .newdate { font-size: 11px; font-weight: normal; }
815
816.newdate { color: #c00; }
817
818.row.arc64 .arc32 { display: none; }
819
820.row.arc64 .arc64 { display: block; }
821
822.row .arc64 { display: none; }
823
824.arc-toggle { white-space: nowrap; float: right; }
825
826.newbuilds div { text-align: center; margin: 14px 0 16px 0; }
827
828.newbuilds { display: none; }
829
830.newbuilds.show { display: block; text-align: center; }
831
832.showmd5, .showdate { font-size: 11px; font-weight: normal; }
833
834.dlmd5 { word-wrap: break-word; }
835
836#steam { height: 20px; padding-left: 0; margin: 12px 0; width: 120px; background: url("//humblebundle-a.akamaihd.net/static/hashed/8daad48c8018906de902cfe0dbbd59d75f462ca3.png") no-repeat; font-size: 10px; font-weight: normal; }
837
838#desura { height: 25px; width: 98px; background: url("//humblebundle-a.akamaihd.net/static/hashed/dc5ab80a0b9ceb87eb3e713ed68a3dc5c72d08c9.png") no-repeat; }
839
840#onlive { height: 24px; width: 118px; position: absolute; top: 27px; left: 120px; background: url("//humblebundle-a.akamaihd.net/static/hashed/fd3afea08ca2008119469cbf053f5eccb374602c.png") no-repeat; }
841
842.clear { clear: both; height: 0; }
843
844#settings div { padding: 6px; line-height: 1.4em; }
845
846#deletekeypage { position: absolute; right: 16px; bottom: 26px; color: red; font-size: 10px; }
847
848#deletebuttons { text-align: center; padding-top: 4px; }
849
850#deletekeyconfirm { width: 280px; position: absolute; bottom: -10px; right: -40px; background: white; border-radius: 5px; padding: 6px; border: black solid 1px; z-index: 200; display: none; }
851
852/* page content */
853.errormsg { display: none; position: relative; text-shadow: none; }
854
855#temail { width: 200px; }
856
857#quickiefix { padding-bottom: 19px; }
858
859#leaderboardstep { display: none; }
860
861/* order form */
862#needhelp { color: #999; text-decoration: none; font-style: italic; }
863
864.placeholder { color: silver; line-height: 25px; padding-left: 5px; position: absolute; }
865
866#tamount { width: 70px; }
867
868#customAmountHolder { display: inline-block; }
869
870#customAmount { height: 18px; width: 70px; }
871
872#payment-amount { padding-left: 42px; margin-left: -42px; }
873
874/* Icons */
875.icn { display: inline-block; position: relative; height: 70px; width: 70px; padding-right: 5px; float: left; }
876
877.icn a img { border: none; }
878
879/* Android instructions */
880div.custominstructions { padding: 0 20px 20px 20px; }
881
882.instructionsteps h3 { font-size: 18px; }
883
884.instructionsteps a, .instructionsteps a:visited { color: #5D801A; }
885
886.instructionsteps img { float: right; display: block; margin-right: -15px; margin-top: -8px; }
887
888.instructionsteps p { font-weight: normal; font-size: 14px; line-height: 24px; margin: 1em 0; }
889
890.instructionsteps p.introsteps { margin-top: 0; }
891
892.instructionsteps .stepholder p { width: 400px; }
893
894.instructionsteps .stepholder { font-size: 14px; margin: 20px 0; }
895
896.instructionsteps .stepholder:last-child { margin-bottom: 0; }
897
898.instructionsteps .steptext { font-weight: bold; padding: 10px 0 10px 55px; }
899
900#show_android_binaries .expandkeys { font-weight: bold; margin-top: 20px; }
901
902.clearfix { clear: both; }
903
904p.mobile-link { font-size: 18px; }
905
906.mobile-link a { letter-spacing: 1px; text-decoration: none; font-weight: bold; }
907
908.mobile-link a:hover { text-decoration: underline; }
909
910#send-email-message { font-weight: normal; font-size: 12px; padding: 0 15px 0 20px; color: #888; }
911
912#send-email-form label { padding-bottom: 10px; }
913
914#email-truncated { width: 200px; }
915
916.download-popup { display: none; background: #eee; border-radius: 3px; position: fixed; top: 30%; left: 50%; margin-left: -255px; width: 450px; z-index: 9999; padding: 20px 30px 30px 30px; font-weight: normal; }
917
918.download-popup h2 { font-size: 25px; }
919
920.download-popup p.warning-text { color: red; }
921
922.download-popup p.warning-text a { color: #4a4c45; }
923
924.buttonHolder { padding-top: 20px; float: right; }
925
926.addAndroidPlatform { padding: 30px 0; }
927
928.addAndroidPlatform h2 { padding-bottom: 20px; }
929
930.custom-download-text { width: 400px; position: absolute; right: 10px; top: 10px; text-align: right; }
931
932.custom-download-text a { color: #360; }
933
934.loading { margin: auto; width: 200px; text-align: center; }
935
936#download-page-outer-progress { background-color: #eee; border-radius: 12px; box-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.2), inset 0 0 0 1px rgba(255, 255, 255, 0.2); margin: 0 auto; overflow: hidden; width: 50%; }
937
938#download-page-inner-progress { background-image: linear-gradient(to bottom, #97b147 11%, #7e992e 100%); border-radius: 12px; box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), inset 0 0 0 1px rgba(0, 0, 0, 0.2); height: 24px; width: 0%; /* Adjust with JavaScript */ }
939
940#download-page-progress-text { text-align: center; }
941
942.arc64 { display: none; }
943
944.whitebox .loading { padding: 50px; width: 300px; }
945
946.whitebox .downloads { padding-right: 30px; }
947
948.whitebox .platform-chooser { padding-top: 30px; }
949
950.whitebox .row { padding-left: 15px; }
951
952.gameinfo { float: left; width: 200px; margin-top: 10px; }
953
954h1 { margin-top: 30px; }
955
956.row { overflow: hidden; transition: all 0.5s ease; }
957
958.row.show { border-bottom: 1px solid #ddd; min-height: 80px; display: block; }
959
960.row .download-buttons, .row .arc-toggle { margin-top: 10px; }
961
962.row.show:last-child { border-bottom: none; }
963
964/* Steam Key Table */
965table.unredeemed-keys-table { width: 100%; border: 1px solid #CCCCCC; }
966
967table.unredeemed-keys-table th { background-image: linear-gradient(-179deg, #F4F4F4 0%, #E9E9E9 100%); border: 1px solid #CCCCCC; font-family: "HelveticaNeue-Medium", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; color: #555555; line-height: 17px; padding: 20px; text-align: left; }
968
969table.unredeemed-keys-table tr { font-family: "HelveticaNeue-Light", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; color: #555555; line-height: 17px; background: #FFFFFF; }
970
971table.unredeemed-keys-table td { border: 1px solid #E9E9E9; padding: 10px 20px; max-width: 400px; }
972
973table.unredeemed-keys-table tr:nth-child(even) { background: #FAFAFA; border: 1px solid #E9E9E9; }
974
975table.unredeemed-keys-table i { font-size: 120%; }
976
977.whitebox-redux.credit button { margin-left: 1em; }
978#sms-form { width: 345px; padding: 10px; border: 1px solid #ddd; border-radius: 5px; background: #eee; }
979#sms-form::after { clear: both; content: ""; display: table; }
980#sms-form .country-code-field { width: 45px; float: left; }
981#sms-form .country-code-label { width: 40px; padding-left: 22px; }
982#sms-form .form-label { display: block; float: left; margin-bottom: 5px; color: #888; font-size: 12px; font-weight: normal; }
983#sms-form .phone-number-field { width: 140px; float: left; margin-left: 10px; }
984#sms-form .phone-number-label { width: 150px; padding-left: 15px; }
985#sms-form .plus-sign { clear: left; float: left; display: block; width: 10px; margin-right: 10px; padding-top: 7px; color: #888; }
986#sms-form .send-sms-button { float: left; }
987#sms-form .sms-disclaimer { clear: left; margin: 0 0 0 20px; padding-top: 5px; color: #aaa; font-size: 10px; font-weight: normal; }
988#sms-form .sms-message { display: none; margin: 10px 0 0; padding: 0 15px 0 20px; color: #888; font-weight: normal; font-size: 12px; }
989#sms-form .validate-code-link { cursor: pointer; margin: 0; padding: 0 15px 0 20px; color: #aaa; font-size: 10px; font-weight: normal; }
990.disabled.gray-button { background: #e4e4e4; cursor: default; }
991
992.generic-popup { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; }
993
994.generic-popup a { color: #535353; }
995
996.generic-popup.outer-shadow { box-shadow: 0 -1px 25px rgba(0, 0, 0, 0.3); left: 50%; top: 50%; margin-left: -200px; margin-top: -200px; position: absolute; z-index: 9999; border-radius: 7px; display: none; }
997
998.generic-popup.content { border-radius: 7px; color: #999999; padding: 20px; background: #f5f5f5; width: 360px; position: relative; text-align: center; }
999.generic-popup.content .description { padding: 4px 0 25px 0; }
1000
1001.generic-popup .no-center { max-width: 360px; text-align: right; position: relative; }
1002
1003.generic-popup.content h1 { font-size: 24px; text-shadow: 0 0 1px #eee; color: #666; }
1004
1005.generic-popup.content h1.noimg { margin-right: 0; line-height: 32px; }
1006
1007.generic-popup.content h1 img { position: relative; top: 5px; margin-right: 15px; }
1008
1009.generic-popup.content h1 span { display: inline-block; height: 25px; width: 25px; margin-right: 15px; position: relative; top: 5px; }
1010
1011.generic-popup.content h2 { font-size: 14px; font-weight: 300; text-shadow: 0 0 1px #eee; margin: 20px 0 0 0; color: #666; }
1012
1013.generic-popup.content .split-left { color: #666; display: inline-block; text-align: left; width: 180px; }
1014
1015.generic-popup.content .split-right { color: #666; display: inline-block; text-align: right; width: 180px; }
1016
1017.generic-popup input[type='text'], .generic-popup input[type='password'] { background: none; border: 1px solid #ccc; border-top: 1px solid #999; border-radius: 3px; box-shadow: 0 1px 2px #bbb inset; padding: 9px; font-size: 16px; color: #333; display: block; width: 342px; margin: 0; }
1018.generic-popup input[type='text'].inline-input, .generic-popup input[type='password'].inline-input { width: 150px; display: inline; }
1019
1020@-moz-document url-prefix() { .generic-popup input[type='text'], .generic-popup input[type='password'] { padding-top: 7px; } }
1021.generic-popup form p { text-align: left; position: relative; }
1022
1023.account-infield { color: #999; font-size: 16px; font-weight: normal; position: absolute; top: 8px; left: 10px; z-index: 1; }
1024
1025.account-input { position: relative; z-index: 2; }
1026.account-input.always-caps { text-transform: uppercase; }
1027
1028.generic-popup .suggest-holder { color: #c66; display: block; font-size: 90%; margin-top: -28px; position: absolute; right: 0; width: 284px; }
1029
1030.generic-popup .suggest-holder a { color: #c66; }
1031
1032.green-button { background-image: linear-gradient(to bottom, #e0ffc2 0%, #b1e37f 100%); border: 1px solid #a7c28c; border-radius: 4px; box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5), 0 1px 0 0 white; color: #42661e; cursor: pointer; display: inline-block; font-weight: bold; margin: 0 0 0 5px; min-width: 50px; padding: 5px 8px 5px 8px; text-align: center; text-shadow: 0 1px rgba(255, 255, 255, 0.6); }
1033.green-button:hover:not(disabled) { background: #b1e37f; }
1034.green-button:disabled, .green-button.disabled { cursor: default; opacity: 0.4; }
1035
1036.gray-button { background-image: linear-gradient(to bottom, #f5f5f5 0%, #dedede 100%); border: 1px solid #bbb; border-radius: 4px; box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5), 0 1px 0 0 white; color: #444; cursor: pointer; display: inline-block; font-weight: bold; margin: 0 0 0 5px; min-width: 50px; padding: 5px 8px 5px 8px; text-align: center; text-shadow: 0 1px rgba(255, 255, 255, 0.6); }
1037
1038a:hover .gray-button { background: #e4e4e4; }
1039
1040.button-link { cursor: pointer; text-decoration: none; }
1041.button-link:disabled, .button-link.disabled { pointer-events: none; }
1042
1043input[type="number"].classy-input, input[type="password"].classy-input, input[type="tel"].classy-input, input[type="text"].classy-input { border: 1px solid #ccc; box-shadow: inset 0 1px 0 #eee,#fff 0 1px 0; margin: 0; padding: 7px; border-radius: 3px; background-color: white; color: #999; }
1044
1045.classy-input[disabled='disabled'] { background: #ccc; color: #333; }
1046
1047.info-tooltip > i { font-size: .8em; opacity: 0.7; transition: all 0.1s linear; }
1048.info-tooltip:hover > i, .info-tooltip:focus > i { opacity: 1; }
1049
1050.small-link, .link-holder { font-size: 12px; font-weight: normal; line-height: 20px; }
1051
1052.generic-popup .small-link { margin: .3em; text-decoration: underline; }
1053
1054.link-holder { text-align: left; position: absolute; left: 2px; top: -2px; height: 20px; width: 200px; }
1055
1056.link-holder a, .generic-popup .small-link { color: #888; }
1057
1058.link-holder a { text-decoration: none; }
1059
1060.generic-popup .clearfix { clear: both; }
1061
1062.generic-popup .center { float: none; left: 0; }
1063
1064.generic-popup.content h2.subtitle { padding-bottom: 12px; text-align: center; margin-top: -10px; }
1065
1066.generic-popup .button-holder { margin-top: 20px; }
1067
1068.subtitle.warning { font-weight: bold; }
1069
1070.generic-popup .error-holder { color: #333; font-size: 14px; padding: 0 4px; position: absolute; left: -280px; text-align: right; z-index: 10; display: none; }
1071
1072.error-holder .errorlist { margin: 0; padding: 0 0 0 30px; }
1073
1074.arrow-holder { position: absolute; left: -525px; top: 0; width: 500px; height: 42px; }
1075
1076.arrow-error { float: right; padding: 12px 0 16px 16px; background: url("//humblebundle-a.akamaihd.net/static/hashed/2d10ad27ca2af9ebcc54fd4322657696e5e50dec.png") no-repeat; margin-right: -5px; margin-top: -2px; font-size: 14px; color: white; font-weight: bold; text-align: right; display: none; position: absolute; right: 0; }
1077
1078.arrow-error-right { background: url("//humblebundle-a.akamaihd.net/static/hashed/d00e64d9e0b5a925c42404a41014b85aecb2f0ea.png") no-repeat; width: 26px; height: 45px; position: absolute; right: -26px; top: 0; z-index: 100; }
1079
1080.arrow-error a { color: #fff; }
1081
1082#email-errors { top: 155px; }
1083
1084.generic-popup .errorlist .error-item { color: #c66; text-decoration: none; }
1085
1086.generic-popup .message-holder { margin-bottom: 20px; line-height: 22px; font-weight: normal; }
1087
1088.generic-popup p { margin: 0 0 20px 0; padding: 0; }
1089
1090.header-text { font-size: 18px; }
1091
1092.account-switch { background: #ddd; border-top: 1px solid #ccc; border-bottom-right-radius: 7px; border-bottom-left-radius: 7px; margin: 20px -20px -22px; font-weight: normal; font-size: 14px; color: #333; }
1093
1094.account-switch .create-account { color: #333; display: block; padding: 12px; text-decoration: none; }
1095
1096.account-switch .create-account .create-inner { font-weight: bold; text-decoration: underline; }
1097
1098.grayout, .generic-bbm-wrapper { background: url("//humblebundle-a.akamaihd.net/static/hashed/cb322c1cdfcdae03f826d02c39b7d998800d15c6.png"); }
1099
1100.grayout { position: fixed; top: 0; left: 0; z-index: 998; right: 0; bottom: 0; background: rgba(40, 44, 52, 0.85); display: none; }
1101
1102.grayout-inner { position: relative; width: 100%; height: 100%; }
1103
1104.slide-down { display: none; }
1105
1106.above-text-label { display: block; text-align: left; margin-bottom: 8px; }
1107
1108/* Modal positioning */
1109.generic-bbm-wrapper { position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 998; background: rgba(0, 0, 0, 0.5); overflow-x: auto; overflow-y: auto; }
1110
1111.generic-bbm-modal { position: relative; top: calc(50% - 250px); left: calc(50% - 200px); width: 276px; }
1112
1113.generic-bbm-modal.eula-modal { top: calc(50% - 360px); left: calc(50% - 300px); width: 600px; }
1114.generic-bbm-modal.eula-modal .generic-popup.content { width: 100%; height: 100%; }
1115.generic-bbm-modal.eula-modal .generic-popup.content .message-holder { max-height: 500px; text-align: left; white-space: pre-line; overflow-x: hidden; overflow-y: scroll; }
1116.generic-bbm-modal.eula-modal .generic-popup.content .noimg { font-size: 22px; margin: 0.25em 0; }
1117
1118.generic-bbm-views { width: 100%; }
1119
1120/* Modal theme */
1121.generic-bbm-wrapper { -webkit-transition: background-color 0.3s; }
1122
1123.generic-bbm-modal { border-radius: 3px; box-shadow: 0 -1px 25px rgba(0, 0, 0, 0.3); box-sizing: initial; }
1124
1125.captcha-invisible { display: none; }
1126
1127/* Animations */
1128/* Open modal */
1129@-webkit-keyframes generic-bbm-open { 0% { -webkit-transform: matrix(0.99126, 0, 0, 0.99126, 0, 43.8813); opacity: 0.1259; }
1130 4% { -webkit-transform: matrix(0.99295, 0, 0, 0.99295, 0, 45.06809); opacity: 0.29544; }
1131 8% { -webkit-transform: matrix(0.99467, 0, 0, 0.99467, 0, 46.26922); opacity: 0.46703; }
1132 12% { -webkit-transform: matrix(0.99619, 0, 0, 0.99619, 0, 47.33355); opacity: 0.61908; }
1133 16% { -webkit-transform: matrix(0.99743, 0, 0, 0.99743, 0, 48.19991); opacity: 0.74284; }
1134 20% { -webkit-transform: matrix(0.99837, 0, 0, 0.99837, 0, 48.86067); opacity: 0.83724; }
1135 24% { -webkit-transform: matrix(0.99905, 0, 0, 0.99905, 0, 49.33658); opacity: 0.90523; }
1136 28% { -webkit-transform: matrix(0.99952, 0, 0, 0.99952, 0, 49.66049); opacity: 0.9515; }
1137 32% { -webkit-transform: matrix(0.99981, 0, 0, 0.99981, 0, 49.8675); opacity: 0.98107; }
1138 36% { -webkit-transform: matrix(0.99999, 0, 0, 0.99999, 0, 49.98966); opacity: 0.99852; }
1139 40% { -webkit-transform: matrix(1.00008, 0, 0, 1.00008, 0, 50.05361); opacity: 1.00766; }
1140 44% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.08); opacity: 1.01143; }
1141 48% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08394); opacity: 1.01199; }
1142 52% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.07589); opacity: 1.01084; }
1143 56% { -webkit-transform: matrix(1.00009, 0, 0, 1.00009, 0, 50.06265); opacity: 1.00895; }
1144 60% { -webkit-transform: matrix(1.00007, 0, 0, 1.00007, 0, 50.04833); opacity: 1.0069; }
1145 64% { -webkit-transform: matrix(1.00005, 0, 0, 1.00005, 0, 50.03518); opacity: 1.00503; }
1146 68% { -webkit-transform: matrix(1.00004, 0, 0, 1.00004, 0, 50.02421); opacity: 1.00346; }
1147 72% { -webkit-transform: matrix(1.00002, 0, 0, 1.00002, 0, 50.01567); opacity: 1.00224; }
1148 76% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00941); opacity: 1.00134; }
1149 80% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00506); opacity: 1.00072; }
1150 84% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.00223); opacity: 1.00032; }
1151 88% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.0005); opacity: 1.00007; }
1152 92% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99956); opacity: 0.99994; }
1153 96% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99913); opacity: 0.99988; }
1154 100% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50); opacity: 1; } }
1155.generic-bbm-modal--open { -webkit-animation-duration: 0.3s; -webkit-animation-name: generic-bbm-open; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1156
1157/* Open a stacked modal */
1158@-webkit-keyframes generic-bbm-stacked { 0% { -webkit-transform: matrix(0.99874, 0, 0, 0.99874, 0, 49.1187); opacity: 0.93705; }
1159 4% { -webkit-transform: matrix(0.99705, 0, 0, 0.99705, 0, 47.93192); opacity: 0.85228; }
1160 8% { -webkit-transform: matrix(0.99533, 0, 0, 0.99533, 0, 46.73078); opacity: 0.76648; }
1161 12% { -webkit-transform: matrix(0.99381, 0, 0, 0.99381, 0, 45.66645); opacity: 0.69046; }
1162 16% { -webkit-transform: matrix(0.99257, 0, 0, 0.99257, 0, 44.80009); opacity: 0.62858; }
1163 20% { -webkit-transform: matrix(0.99163, 0, 0, 0.99163, 0, 44.13933); opacity: 0.58138; }
1164 24% { -webkit-transform: matrix(0.99095, 0, 0, 0.99095, 0, 43.66342); opacity: 0.54739; }
1165 28% { -webkit-transform: matrix(0.99049, 0, 0, 0.99049, 0, 43.33951); opacity: 0.52425; }
1166 32% { -webkit-transform: matrix(0.99019, 0, 0, 0.99019, 0, 43.1325); opacity: 0.50946; }
1167 36% { -webkit-transform: matrix(0.99002, 0, 0, 0.99002, 0, 43.01034); opacity: 0.50074; }
1168 40% { -webkit-transform: matrix(0.98992, 0, 0, 0.98992, 0, 42.94639); opacity: 0.49617; }
1169 44% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92001); opacity: 0.49429; }
1170 48% { -webkit-transform: matrix(0.98988, 0, 0, 0.98988, 0, 42.91606); opacity: 0.494; }
1171 52% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92411); opacity: 0.49458; }
1172 56% { -webkit-transform: matrix(0.98991, 0, 0, 0.98991, 0, 42.93736); opacity: 0.49553; }
1173 60% { -webkit-transform: matrix(0.98993, 0, 0, 0.98993, 0, 42.95167); opacity: 0.49655; }
1174 64% { -webkit-transform: matrix(0.98995, 0, 0, 0.98995, 0, 42.96482); opacity: 0.49749; }
1175 68% { -webkit-transform: matrix(0.98997, 0, 0, 0.98997, 0, 42.97579); opacity: 0.49827; }
1176 72% { -webkit-transform: matrix(0.98998, 0, 0, 0.98998, 0, 42.98433); opacity: 0.49888; }
1177 76% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99059); opacity: 0.49933; }
1178 80% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99494); opacity: 0.49964; }
1179 84% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.99777); opacity: 0.49984; }
1180 88% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.9995); opacity: 0.49996; }
1181 92% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00044); opacity: 0.50003; }
1182 96% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00088); opacity: 0.50006; }
1183 100% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43); opacity: 0.5; } }
1184.generic-bbm-modal--stacked { -webkit-animation-duration: 0.43333s; -webkit-animation-name: generic-bbm-stacked; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1185
1186/* Close a stacked modal */
1187@-webkit-keyframes generic-bbm-stacked-reverse { 0% { -webkit-transform: matrix(0.99123, 0, 0, 0.99123, 0, 43.86266); opacity: 0.56162; }
1188 4% { -webkit-transform: matrix(0.99293, 0, 0, 0.99293, 0, 45.05306); opacity: 0.64665; }
1189 8% { -webkit-transform: matrix(0.99465, 0, 0, 0.99465, 0, 46.25785); opacity: 0.7327; }
1190 12% { -webkit-transform: matrix(0.99618, 0, 0, 0.99618, 0, 47.32543); opacity: 0.80896; }
1191 16% { -webkit-transform: matrix(0.99742, 0, 0, 0.99742, 0, 48.19443); opacity: 0.87103; }
1192 20% { -webkit-transform: matrix(0.99837, 0, 0, 0.99837, 0, 48.8572); opacity: 0.91837; }
1193 24% { -webkit-transform: matrix(0.99905, 0, 0, 0.99905, 0, 49.33456); opacity: 0.95247; }
1194 28% { -webkit-transform: matrix(0.99951, 0, 0, 0.99951, 0, 49.65946); opacity: 0.97568; }
1195 32% { -webkit-transform: matrix(0.99981, 0, 0, 0.99981, 0, 49.8671); opacity: 0.99051; }
1196 36% { -webkit-transform: matrix(0.99999, 0, 0, 0.99999, 0, 49.98963); opacity: 0.99926; }
1197 40% { -webkit-transform: matrix(1.00008, 0, 0, 1.00008, 0, 50.05377); opacity: 1.00384; }
1198 44% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08024); opacity: 1.00573; }
1199 48% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08419); opacity: 1.00601; }
1200 52% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.07612); opacity: 1.00544; }
1201 56% { -webkit-transform: matrix(1.00009, 0, 0, 1.00009, 0, 50.06284); opacity: 1.00449; }
1202 60% { -webkit-transform: matrix(1.00007, 0, 0, 1.00007, 0, 50.04848); opacity: 1.00346; }
1203 64% { -webkit-transform: matrix(1.00005, 0, 0, 1.00005, 0, 50.03529); opacity: 1.00252; }
1204 68% { -webkit-transform: matrix(1.00004, 0, 0, 1.00004, 0, 50.02428); opacity: 1.00173; }
1205 72% { -webkit-transform: matrix(1.00002, 0, 0, 1.00002, 0, 50.01572); opacity: 1.00112; }
1206 76% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00944); opacity: 1.00067; }
1207 80% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00508); opacity: 1.00036; }
1208 84% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.00223); opacity: 1.00016; }
1209 88% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.0005); opacity: 1.00004; }
1210 92% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99956); opacity: 0.99997; }
1211 96% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99912); opacity: 0.99994; }
1212 100% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50); opacity: 1; } }
1213.generic-bbm-modal--stacked-reverse { -webkit-animation-duration: 0.43333s; -webkit-animation-name: generic-bbm-stacked-reverse; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1214
1215/* Close a modal */
1216@-webkit-keyframes generic-bbm-close { 0% { -webkit-transform: matrix(0.99874, 0, 0, 0.99874, 0, 49.1187); opacity: 0.8741; }
1217 4% { -webkit-transform: matrix(0.99705, 0, 0, 0.99705, 0, 47.93192); opacity: 0.70456; }
1218 8% { -webkit-transform: matrix(0.99533, 0, 0, 0.99533, 0, 46.73078); opacity: 0.53297; }
1219 12% { -webkit-transform: matrix(0.99381, 0, 0, 0.99381, 0, 45.66645); opacity: 0.38092; }
1220 16% { -webkit-transform: matrix(0.99257, 0, 0, 0.99257, 0, 44.80009); opacity: 0.25716; }
1221 20% { -webkit-transform: matrix(0.99163, 0, 0, 0.99163, 0, 44.13933); opacity: 0.16276; }
1222 24% { -webkit-transform: matrix(0.99095, 0, 0, 0.99095, 0, 43.66342); opacity: 0.09477; }
1223 28% { -webkit-transform: matrix(0.99049, 0, 0, 0.99049, 0, 43.33951); opacity: 0.0485; }
1224 32% { -webkit-transform: matrix(0.99019, 0, 0, 0.99019, 0, 43.1325); opacity: 0.01893; }
1225 36% { -webkit-transform: matrix(0.99002, 0, 0, 0.99002, 0, 43.01034); opacity: 0.00148; }
1226 40% { -webkit-transform: matrix(0.98992, 0, 0, 0.98992, 0, 42.94639); opacity: -0.00766; }
1227 44% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92001); opacity: -0.01143; }
1228 48% { -webkit-transform: matrix(0.98988, 0, 0, 0.98988, 0, 42.91606); opacity: -0.01199; }
1229 52% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92411); opacity: -0.01084; }
1230 56% { -webkit-transform: matrix(0.98991, 0, 0, 0.98991, 0, 42.93736); opacity: -0.00895; }
1231 60% { -webkit-transform: matrix(0.98993, 0, 0, 0.98993, 0, 42.95167); opacity: -0.0069; }
1232 64% { -webkit-transform: matrix(0.98995, 0, 0, 0.98995, 0, 42.96482); opacity: -0.00503; }
1233 68% { -webkit-transform: matrix(0.98997, 0, 0, 0.98997, 0, 42.97579); opacity: -0.00346; }
1234 72% { -webkit-transform: matrix(0.98998, 0, 0, 0.98998, 0, 42.98433); opacity: -0.00224; }
1235 76% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99059); opacity: -0.00134; }
1236 80% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99494); opacity: -0.00072; }
1237 84% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.99777); opacity: -0.00032; }
1238 88% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.9995); opacity: -7e -5; }
1239 92% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00044); opacity: 6.0e-05; }
1240 96% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00088); opacity: 0.00012; }
1241 100% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43); opacity: 0; } }
1242.generic-bbm-modal--close { -webkit-animation-duration: 0.43333s; -webkit-animation-name: generic-bbm-close; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1243
1244#account-login-authy-token-holder { display: none; }
1245
1246@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { .generic-bbm-modal--open, .generic-bbm-modal--stacked, .generic-bbm-modal--stacked-reverse, .generic-bbm-modal--destroy { -webkit-animation: none !important; } }
1247 #flash {
1248 position:fixed;
1249 right: 30px;
1250 top:10px;
1251 background: black;
1252 opacity: .8;
1253 border-radius: 10px;
1254 color:#eee;
1255 padding:20px;
1256 min-width: 200px;
1257 max-width: 400px;
1258 text-align: center;
1259 z-index: 99999;
1260 box-shadow: 1px 1px 5px #000;
1261 display:none;
1262 }
1263html, body {
1264 -webkit-font-smoothing: antialiased;
1265 -moz-osx-font-smoothing: grayscale;
1266}
1267
1268body {
1269 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1270 font-size: 14px;
1271 margin: 0;
1272 padding: 0;
1273}
1274
1275// Localize.js uses the <var> tag to indicate certain special things. However,
1276// some browsers apply special CSS to the <var> tag which we don't want. This
1277// effectively removes any special CSS that the browser might apply to <var>.
1278var {
1279 margin: 0;
1280 padding: 0;
1281 border: 0;
1282 font-size: 100%;
1283 font: inherit;
1284 vertical-align: baseline;
1285}
1286.humble-banner { box-sizing: content-box; background: radial-gradient(ellipse closest-side, #4b4b4b 0%, black 40%); height: 90px; padding: 10px 0; }
1287.humble-banner a, .humble-banner a:visited { display: block; width: 651px; height: 89px; text-align: center; margin: 0 auto; text-decoration: none; position: relative; }
1288.humble-banner p { font-size: 18px; line-height: 18px; color: #ccc; font-style: italic; margin: 0; padding: 0; position: absolute; top: 36px; left: -250px; width: 240px; text-align: right; }
1289.humble-banner img { margin: 12px 0 0 0; height: 45px; width: auto; }
1290.humble-banner h3 { margin: 0; padding: 0; display: inline-block; position: relative; }
1291.humble-banner h4 { font-size: 14px; line-height: 14px; color: #eee; margin: 0; font-weight: normal; padding: 4px 0 16px 0; }
1292.sharer {
1293 display: inline-block;
1294 vertical-align: middle;
1295}
1296
1297.sharer.l {
1298 float: none;
1299 position: static;
1300}
1301
1302.sharer + .sharer,
1303script + .sharer {
1304 margin-left: 15px;
1305}
1306
1307.social-media-shares {
1308 text-align: center;
1309 padding-bottom: 10px;
1310}
1311 </style>
1312
1313 <style type="text/css">@font-face { font-family: 'hb-icons'; src: url("/static/hashed/17015ce97435ec01a0b93ed4cd7e0c07d8358d94.woff2") format("woff2"), url("/static/hashed/aa7c3e70c582fdfe2eaa1f7fa385de1fdf9ad5aa.woff") format("woff"), url("/static/hashed/a644e848801b42652db065692ad02c14597addc3.ttf") format("truetype"), url("/static/hashed/e0d86cf22c1a59129aaccbf71a27375ce4d8ab4a.otf") format("opentype"); font-weight: normal; font-style: normal; }
1314/* Sophia Pro */
1315@font-face { font-family: 'Sofia Pro'; src: url("/static/hashed/9e29ad97c24ce996ebe7aefbc55c0077ed0d8d2f.woff2") format("woff2"), url("/static/hashed/cbe7d774210bd1694c15df789ac02ccf3b2b4e92.woff") format("woff"), url("/static/hashed/c25e4297360ab6310322bcc95cf47b58fd6321bc.ttf") format("truetype"), url("/static/hashed/a294c7b2895267014ac902206c4bd4c75b586a04.otf") format("opentype"); font-weight: 900; font-style: normal; }
1316@font-face { font-family: 'Sofia Pro'; src: url("/static/hashed/86b0d4d2129d83657c3712791efc7e9754aa8a82.woff2") format("woff2"), url("/static/hashed/c0623e77d8862256a4360e1115d945053eb655ef.woff") format("woff"), url("/static/hashed/e01d35c833cf887534576322604e6e1ec2c95361.ttf") format("truetype"), url("/static/hashed/1b015efad5d8d477ac94c6c74de3a6d3d3ed16df.otf") format("opentype"); font-weight: 900; font-style: italic; }
1317@font-face { font-family: 'Sofia Pro'; src: url("/static/hashed/34c59909d0360e2d5e43bcb210176a753e1866b0.woff2") format("woff2"), url("/static/hashed/11d59a3ff5cdd3390fb93fbd9615dc0fb56a8c65.woff") format("woff"), url("/static/hashed/7e9bccdbfb3878e6a5453bf99993eed610d0e41d.ttf") format("truetype"), url("/static/hashed/18a648d337ad820b6dbf8145682d67d5259dcebd.otf") format("opentype"); font-weight: 300; font-style: normal; }
1318@font-face { font-family: 'Sofia Pro'; src: url("/static/hashed/5b6a9522d5ddf17bbc23ee59f994e6df291ed825.woff2") format("woff2"), url("/static/hashed/df30037a1c8ff81537368af51b9e3fe836ee2804.woff") format("woff"), url("/static/hashed/9746d94d32ced44188e055d15495eed7f8fd43b1.ttf") format("truetype"), url("/static/hashed/1ce1b93b6c5386c81aed0a4d365d51809545ec39.otf") format("opentype"); font-weight: 300; font-style: italic; }
1319@font-face { font-family: 'Sofia Pro'; src: url("/static/hashed/0052ab0bbfee0e88edc1e6c68494d9449016fd24.woff2") format("woff2"), url("/static/hashed/dcfc553e267fb5bb92a7510b6be35159fdadf57f.woff") format("woff"), url("/static/hashed/9370f719a25957b05ace466b39c2a2d4b33734c6.ttf") format("truetype"), url("/static/hashed/ab1f225985185b4ebb319b4c7f89b1d9b2b59848.otf") format("opentype"); font-weight: normal; font-style: normal; }
1320@font-face { font-family: 'Sofia Pro'; src: url("/static/hashed/c294b2a2521169835a44953e87e2cc8900cee5ec.woff2") format("woff2"), url("/static/hashed/9322caa9a8ca9c74d5f0af655d789d1d7d63a24a.woff") format("woff"), url("/static/hashed/034595580ccc31b93f69fe336eb28bd519f5dc95.ttf") format("truetype"), url("/static/hashed/f4e4f58e25e1a1ad121ed70b9c4832bb69c941b3.otf") format("opentype"); font-weight: normal; font-style: italic; }</style>
1321 <link rel="stylesheet" href="https://humblebundle-a.akamaihd.net/static/hashed/149e1a4113c4b83734843264419d4e94a6094e3a.css" />
1322 <link rel="stylesheet" href="https://humblebundle-a.akamaihd.net/static/hashed/d683df30c58a55cd5d46de4e620d4ef3f38ed244.css" />
1323 <link rel="stylesheet" href="https://humblebundle-a.akamaihd.net/static/hashed/4357c6bf647048575c04f0cd82dac536a610dbbb.css" />
1324<style>
1325 @charset "UTF-8";
1326.charity-selection .charity-results .charity-preview .select-charity, .charity-selection .charity-results .charity-preview .remove-charity, .charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity, .charity-details .charity-title .select-charity { display: block; padding: 4px 0; border-radius: 3px; border: none; background: rgba(255, 255, 255, 0.3); border: 1px solid rgba(0, 0, 0, 0.2); text-align: center; font-size: 12px; font-weight: bold; text-decoration: none; color: #494f5c; }
1327
1328.charity-selection .charity-results .charity-preview .select-charity.is-selected, .charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity.is-selected, .charity-details .charity-title .select-charity.is-selected, .charity-details .charity-title .select-charity.is-featured { border: 1px solid rgba(0, 0, 0, 0.1); background: #17a1e5; color: #fff; }
1329
1330.charity-selection h2 { font-size: 26px; color: #494f5c; font-weight: 200; margin: -6px 0 0 0; }
1331.charity-selection .charity-search { padding-bottom: 20px; position: relative; font-size: 14px; }
1332.charity-selection .charity-search input, .charity-selection .charity-search label, .charity-selection .charity-search button { display: inline-block; margin-right: 10px; }
1333.charity-selection .charity-search input, .charity-selection .charity-search select, .charity-selection .charity-search button { border-radius: 3px; height: 31px; padding: 4px; box-sizing: border-box; border: 1px solid #ddd; margin-top: 4px; font-size: 14px; }
1334.charity-selection .charity-search label { text-transform: uppercase; font-size: 10px; color: #a1a7b2; }
1335.charity-selection .charity-search label::first-letter { margin-left: 2px; }
1336.charity-selection .charity-search .query { position: relative; width: 350px; }
1337.charity-selection .charity-search .query input { width: 100%; padding-left: 26px; color: #494f5c; }
1338.charity-selection .charity-search .query i { position: absolute; bottom: 8px; left: 8px; font-size: 14px; color: #a1a7b2; }
1339.charity-selection .charity-search .category select, .charity-selection .charity-search .country select, .charity-selection .charity-search .state select { width: 100%; display: inline-block; color: #494f5c; }
1340.charity-selection .charity-search .category { width: 250px; }
1341.charity-selection .charity-search .country { width: 210px; }
1342.charity-selection .charity-search .state { display: none; }
1343.charity-selection .charity-search .state.is-united-states, .charity-selection .charity-search .country.is-united-states { width: 100px; display: inline-block; }
1344.charity-selection .charity-search button { width: 100px; margin-right: 0; border: 1px solid rgba(0, 0, 0, 0.2); box-shadow: 0px 1px 2px rgba(255, 255, 255, 0.2) inset; background-image: linear-gradient(top, #4DC4FF 0%, #17A1E6 100%); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); color: #fff; font-weight: 500; }
1345.charity-selection .charity-search:after { content: ''; display: block; clear: both; }
1346.charity-selection .results-heading { margin: 4px 0 0 0; font-size: 20px; font-weight: 200; }
1347.charity-selection .results-heading-disclaimer { margin: 4px 0 2px 0; font-size: 12px; color: #7b818c; font-weight: normal; display: none; }
1348.charity-selection .charity-img { height: 64px; width: 64px; background-color: white; background-size: contain; background-repeat: no-repeat; background-position: center center; border-radius: 3px; overflow: hidden; position: absolute; cursor: pointer; left: 0; top: 0; }
1349.charity-selection .partnership-line { position: absolute; right: 0; bottom: 0; color: #7B818C; font-size: 12px; font-style: italic; }
1350.charity-selection .partnership-line a { color: #7B818C; }
1351.charity-selection .charity-results { padding-top: 5px; margin-bottom: 20px; margin-right: -20px; }
1352.charity-selection .charity-results .charity-selection-message { text-align: center; color: #7b818c; margin: 65px; }
1353.charity-selection .charity-results .charity-selection-message h1 { font-size: 24px; font-weight: normal; }
1354.charity-selection .charity-results .charity-selection-message img { vertical-align: middle; margin-right: 5px; }
1355.charity-selection .charity-results .charity-preview { width: 300px; margin: 20px 20px 20px 0; display: inline-block; text-align: left; vertical-align: top; position: relative; padding-left: 76px; box-sizing: border-box; }
1356.charity-selection .charity-results .charity-preview.is-disallowed { opacity: 0.5; }
1357.charity-selection .charity-results .charity-preview.is-disallowed button { outline: none; }
1358.charity-selection .charity-results .charity-preview a { text-decoration: none; }
1359.charity-selection .charity-results .charity-preview .select-charity { display: inline-block; font-size: 10px; height: 18px; padding: 1px 8px; text-transform: uppercase; }
1360.charity-selection .charity-results .charity-preview .select-charity .unselected-text { display: inline; }
1361.charity-selection .charity-results .charity-preview .select-charity .disallowed-text, .charity-selection .charity-results .charity-preview .select-charity .selected-text, .charity-selection .charity-results .charity-preview .select-charity .featured-text { display: none; }
1362.charity-selection .charity-results .charity-preview .select-charity.is-unselected-featured .featured-text { display: inline; }
1363.charity-selection .charity-results .charity-preview .select-charity.is-unselected-featured .selected-text, .charity-selection .charity-results .charity-preview .select-charity.is-unselected-featured .unselected-text, .charity-selection .charity-results .charity-preview .select-charity.is-unselected-featured .disallowed-text { display: none; }
1364.charity-selection .charity-results .charity-preview .select-charity.is-selected .selected-text { display: inline; }
1365.charity-selection .charity-results .charity-preview .select-charity.is-selected .disallowed-text, .charity-selection .charity-results .charity-preview .select-charity.is-selected .unselected-text, .charity-selection .charity-results .charity-preview .select-charity.is-selected .featured-text { display: none; }
1366.charity-selection .charity-results .charity-preview .select-charity.is-disallowed { cursor: default; background: #333; }
1367.charity-selection .charity-results .charity-preview .select-charity.is-disallowed .disallowed-text { display: inline; color: #787878; }
1368.charity-selection .charity-results .charity-preview .select-charity.is-disallowed .selected-text, .charity-selection .charity-results .charity-preview .select-charity.is-disallowed .unselected-text, .charity-selection .charity-results .charity-preview .select-charity.is-disallowed .featured-text { display: none; }
1369.charity-selection .charity-results .charity-preview .select-charity.is-featured { cursor: default; background: #17A1E5; }
1370.charity-selection .charity-results .charity-preview .select-charity.is-featured .featured-text { color: #fff; display: inline; }
1371.charity-selection .charity-results .charity-preview .select-charity.is-featured .selected-text, .charity-selection .charity-results .charity-preview .select-charity.is-featured .unselected-text, .charity-selection .charity-results .charity-preview .select-charity.is-featured .disallowed-text { display: none; }
1372.charity-selection .charity-results .charity-preview .remove-charity { background-color: #cb272c; color: white; display: inline-block; font-size: 10px; height: 18px; margin-left: 5px; padding: 1px 8px; text-transform: uppercase; }
1373.charity-selection .charity-results .charity-preview .charity-name { margin: 0 0 0 auto; }
1374.charity-selection .charity-results .charity-preview .charity-name h4 { margin: -1px 0 0 0; padding: 0 0 7px 0; height: 18px; font-size: 16px; font-weight: 400; white-space: nowrap; overflow-x: hidden; text-overflow: ellipsis; width: 204px; }
1375.charity-selection .charity-results .charity-preview .charity-name h5.location { margin: 0 0 9px 0; font-size: 12px; font-weight: normal; color: #7b818c; height: 14px; }
1376.charity-selection .featured-charities { border-bottom: 1px solid #ddd; margin-bottom: 20px; padding-bottom: 20px; min-height: 116px; }
1377.charity-selection .featured-charities::after { clear: both; content: ""; display: table; }
1378.charity-selection .featured-charities .featured-description-wrapper { float: left; }
1379.charity-selection .featured-charities .featured-heading { font-size: 20px; font-weight: 200; margin: 20px 0 18px 0; }
1380.charity-selection .featured-charities .featured-charities-description { width: 245px; margin: 0; line-height: 16px; }
1381.charity-selection .featured-charities .featured-charities-list { padding-top: 20px; float: right; }
1382.charity-selection .featured-charities .featured-charities-list .charity-list { text-align: right; }
1383.charity-selection .featured-charities .featured-charities-list .charity-preview { width: 64px; margin: 0 -10px 0 65px; display: inline-block; text-align: center; vertical-align: top; position: relative; box-sizing: border-box; }
1384.charity-selection .featured-charities .featured-charities-list .charity-preview:first-of-type { margin-left: 0; }
1385.charity-selection .featured-charities .featured-charities-list .charity-preview a { text-decoration: none; }
1386.charity-selection .featured-charities .featured-charities-list .charity-preview .charity-img { position: static; display: block; margin: 0 auto; }
1387.charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity { padding: 1px 8px; font-size: 10px; text-transform: uppercase; height: 18px; margin: 0 auto; }
1388.charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity .selected-text, .charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity .unselected-text, .charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity .featured-text { display: none; }
1389.charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity.is-selected .selected-text { display: inline; }
1390.charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity.is-featured .featured-text { display: inline; }
1391.charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity.is-unselected-featured .featured-text { display: inline; }
1392.charity-selection .featured-charities .featured-charities-list .charity-preview .select-charity:not(.is-selected):not(.is-featured):not(.is-unselected-featured) .unselected-text { display: inline; }
1393.charity-selection .featured-charities .featured-charities-list .charity-preview .charity-name { margin: 0 0 0 auto; }
1394.charity-selection .featured-charities .featured-charities-list .charity-preview .charity-name h4 { margin: 12px -40% 12px -40%; height: 18px; font-size: 12px; font-weight: normal; }
1395.charity-selection .featured-charities .featured-charities-list .charity-preview .charity-name h5.location { display: none; }
1396
1397.charity-details { margin-bottom: 40px; }
1398.charity-details:after { content: ''; display: block; clear: both; }
1399.charity-details .charity-title { display: block; position: relative; padding-bottom: 16px; border-bottom: 1px solid #ddd; margin-bottom: 20px; }
1400.charity-details .charity-title h2 { font-size: 26px; font-weight: 200; margin: 0; }
1401.charity-details .charity-title .select-charity { padding: 7px 14px; font-size: 14px; position: absolute; top: 0; right: 0; }
1402.charity-details .charity-title .select-charity .selected-text, .charity-details .charity-title .select-charity .unselected-text, .charity-details .charity-title .select-charity .featured-text { display: none; }
1403.charity-details .charity-title .select-charity.is-selected .selected-text { display: inline; }
1404.charity-details .charity-title .select-charity.is-featured .featured-text { display: inline; }
1405.charity-details .charity-title .select-charity.is-unselected-featured .featured-text { display: inline; }
1406.charity-details .charity-title .select-charity:not(.is-selected):not(.is-featured):not(.is-unselected-featured) .unselected-text { display: inline; }
1407.charity-details .charity-img { width: 190px; height: 190px; float: left; border: 1px solid #ddd; border-radius: 3px; background-color: white; background-size: contain; background-repeat: no-repeat; background-position: center center; position: relative; }
1408.charity-details .charity-sidebar { margin-left: 210px; }
1409.charity-details .charity-sidebar .charity-info { font-style: italic; }
1410.charity-details .charity-sidebar .charity-info strong { font-style: normal; }
1411.charity-details .charity-sidebar .charity-link { display: block; font-weight: bold; font-style: normal; color: #17a1e5; margin: 1em 0; }
1412.charity-details .charity-description { font-size: 14px; line-height: 21px; }
1413
1414.charity-account-cta { position: fixed; bottom: -56px; left: 0; right: 0; height: 48px; text-align: center; z-index: 1000; }
1415.charity-account-cta .charity-account-cta-message { display: inline-block; height: 48px; padding: 18px 40px; box-sizing: border-box; border-radius: 3px 3px 0 0; background: #d5d9e1; border: 1px solid rgba(161, 167, 178, 0.5); box-shadow: 0 -1px 8px rgba(0, 0, 0, 0.3); }
1416.charity-account-cta .charity-account-cta-message p { margin: 0; }
1417
1418.unstyled-link { text-decoration: none; }
1419
1420.genericbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/aafd697db4950b99bc95a0ef740f10d7301eb437.png") no-repeat; }
1421
1422.activated .genericbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/7f9102778b07eec38f1ba5911c95c24d3aa98318.png") no-repeat; }
1423
1424.steambutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/4679a3c4d14fbda0fe37478d446d001fad44e3c1.png") no-repeat; }
1425
1426.activated .steambutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/7d32b8cb2ed51ab18ec0e5a40208afd4a41c988c.png") no-repeat; }
1427
1428.uplaybutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/4b3fd1c208843f91a063bec2349b526202a4fe6e.png") no-repeat; }
1429
1430.activated .uplaybutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/4ca5ac1bf3373babd5a508d6556f5f7fd6ad4b38.png") no-repeat; }
1431
1432.originbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/e76fbc1ccb8733279587f6038056cd3fdc0271a9.png") no-repeat; }
1433
1434.activated .originbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/3ff62f831583f243b65f8954c08f40702eed5912.png") no-repeat; }
1435
1436.ouyabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/e8916956991bdd418ccdb45e6dead81cae599a34.png") no-repeat; }
1437
1438.activated .ouyabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/cb5ea8b036c49c5f6466d97c37703016668df034.png") no-repeat; }
1439
1440.desurabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/97b4d580682444ec310e39480957a39d84a50106.png") no-repeat; }
1441
1442.activated .desurabutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/72c7a91a612ceee5ceda77133c9d79bf66b8dec3.png") no-repeat; }
1443
1444.onlivebutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/e7426f51dea62e220deeb988794cb32e15c265ae.png") no-repeat; }
1445
1446.activated .onlivebutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/8c812b14676720a1c5541e5ff0084336f8ca952b.png") no-repeat; }
1447
1448.multiplayerbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/6f98857f10330e006847a2571bd2fcdd972da502.png") no-repeat; }
1449
1450.activated .multiplayerbutton { background: url("//humblebundle-a.akamaihd.net/static/hashed/20048fabc7a0a68316b0315f584c58ad95b17055.png") no-repeat; }
1451
1452.squareenix_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/ac97edf1d373f749576bab85be377698494478d9.png") no-repeat; }
1453
1454.activated .squareenix_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/3af19fcba4ca44990c78e1aebee17bbadd21afe7.png") no-repeat; }
1455
1456.bethesda_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/61a2c4c13f0b95b11aec7784356d325f1ad76223.png") no-repeat; }
1457
1458.activated .bethesda_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/80a34f59a907904dcb29c5e434affb9f88ee6fc6.png") no-repeat; }
1459
1460.telltalegames_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/c3c956701f7cbf7842d1fef8d713f829042dbfb4.png") no-repeat; }
1461
1462.activated .telltalegames_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/cfe22581a0a30154a85744ae2f58671af6b731b6.png") no-repeat; }
1463
1464.nintendo_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/32be74acd8de11c5a9a240c5ce3c00d0287b83a3.png") no-repeat; }
1465
1466.activated .nintendo_button { background: url("//humblebundle-a.akamaihd.net/static/hashed/2a16694e165dc6e39f3e89f6eba6d1451d278f6a.png") no-repeat; }
1467
1468.soldout { visibility: hidden; }
1469
1470.bbm-modal .whitebox .loading { padding: 50px; width: 300px; }
1471.bbm-modal .whitebox .downloads { padding-right: 30px; }
1472.bbm-modal .whitebox .platform-chooser { padding-top: 30px; }
1473.bbm-modal .whitebox .row { padding-left: 15px; }
1474.bbm-modal .whitebox .keyfield { width: 350px; height: 28px; color: #808080; text-align: center; line-height: 28px; font-size: 12px; -webkit-font-smoothing: antialiased; float: left; background: url("//humblebundle-a.akamaihd.net/static/hashed/9e9017643ddecc7f2d3cd0032c577b88d96ce5e0.png") no-repeat; }
1475.bbm-modal .whitebox .clear { clear: both; height: 0; }
1476
1477.bbm-modal { background: #fff; color: #333; font-size: 14px; font-weight: normal; box-shadow: 0 0 6px rgba(0, 0, 0, 0.6), 0 1px 2px rgba(0, 0, 0, 0.9); }
1478
1479/* Modal positioning */
1480.bbm-wrapper { background: rgba(0, 0, 0, 0.4); position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 100; padding: 0 10px 0 10px; text-align: left; overflow: auto; }
1481
1482.bbm-modal { border-radius: 3px; min-width: 761px; margin: auto; margin-bottom: 40px; width: auto; max-width: 550px; }
1483
1484.bbm-views { width: 100%; }
1485
1486.generic-bbm-views { width: 100%; }
1487
1488/* BLOCKS */
1489.bbm-modal__topbar, .bbm-modal__bottombar { padding: 0 30px; }
1490
1491.bbm-modal__topbar { border-bottom: 1px solid rgba(0, 0, 0, 0.1); border-radius: 3px 3px 0 0; padding: 10px 30px; background: #bbb; font-weight: bold; font-size: 16px; margin-bottom: 30px; }
1492.bbm-modal__topbar i { margin-right: 10px; }
1493.bbm-modal__topbar > ul { list-style: none; text-align: center; padding: 0; margin: 0; }
1494
1495.bbm-modal__tab { display: inline-block; padding: 15px 10px; }
1496.bbm-modal__tab a { font-size: 16px; font-weight: bold; color: #999999; }
1497.bbm-modal__tab a:hover, .bbm-modal__tab a.active { color: #222222; }
1498
1499.bbm-modal__title { padding: 20px 30px; margin: 0; line-height: 1em; color: #312d3a; }
1500
1501.bbm-modal__section { padding: 60px 30px 0px 30px; font-size: 14px; font-weight: normal; line-height: 26px; color: #333; }
1502.bbm-modal__section p:last-child { padding: 0; margin-bottom: 0; }
1503.bbm-modal__section a { color: #333; }
1504.bbm-modal__section h3 { margin: 0; font-size: 20px; line-height: 1em; }
1505
1506.bbm-modal__bottombar { border-top: 1px solid rgba(0, 0, 0, 0.1); padding: 18px; text-align: right; margin-top: 30px; }
1507
1508/* MODULES */
1509.bbm-group { content: ""; display: table; clear: both; }
1510
1511.bbm-button { display: inline-block; color: rgba(49, 45, 58, 0.8); text-decoration: none; font-size: 14px; font-weight: 500; position: relative; line-height: 1em; padding: 10px 14px; border-radius: 3px; background: #fcfcfc; background-image: -o-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: -moz-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: -webkit-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: -ms-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); background-image: linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.15) 100%); -moz-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.2); }
1512.bbm-button.inactive { opacity: 0.5; pointer-events: none; }
1513.bbm-button:active { background-image: -o-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: -moz-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: -webkit-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: -ms-linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); background-image: linear-gradient(rgba(70, 30, 170, 0) 0%, rgba(65, 61, 75, 0.25) 100%); -moz-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.2); }
1514
1515/* ANIMATIONS */
1516/* Open modal */
1517@-webkit-keyframes bbm-open { 0% { -webkit-transform: matrix(0.99126, 0, 0, 0.99126, 0, 43.8813); opacity: 0.1259; }
1518 4% { -webkit-transform: matrix(0.99295, 0, 0, 0.99295, 0, 45.06809); opacity: 0.29544; }
1519 8% { -webkit-transform: matrix(0.99467, 0, 0, 0.99467, 0, 46.26922); opacity: 0.46703; }
1520 12% { -webkit-transform: matrix(0.99619, 0, 0, 0.99619, 0, 47.33355); opacity: 0.61908; }
1521 16% { -webkit-transform: matrix(0.99743, 0, 0, 0.99743, 0, 48.19991); opacity: 0.74284; }
1522 20% { -webkit-transform: matrix(0.99837, 0, 0, 0.99837, 0, 48.86067); opacity: 0.83724; }
1523 24% { -webkit-transform: matrix(0.99905, 0, 0, 0.99905, 0, 49.33658); opacity: 0.90523; }
1524 28% { -webkit-transform: matrix(0.99952, 0, 0, 0.99952, 0, 49.66049); opacity: 0.9515; }
1525 32% { -webkit-transform: matrix(0.99981, 0, 0, 0.99981, 0, 49.8675); opacity: 0.98107; }
1526 36% { -webkit-transform: matrix(0.99999, 0, 0, 0.99999, 0, 49.98966); opacity: 0.99852; }
1527 40% { -webkit-transform: matrix(1.00008, 0, 0, 1.00008, 0, 50.05361); opacity: 1.00766; }
1528 44% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.08); opacity: 1.01143; }
1529 48% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08394); opacity: 1.01199; }
1530 52% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.07589); opacity: 1.01084; }
1531 56% { -webkit-transform: matrix(1.00009, 0, 0, 1.00009, 0, 50.06265); opacity: 1.00895; }
1532 60% { -webkit-transform: matrix(1.00007, 0, 0, 1.00007, 0, 50.04833); opacity: 1.0069; }
1533 64% { -webkit-transform: matrix(1.00005, 0, 0, 1.00005, 0, 50.03518); opacity: 1.00503; }
1534 68% { -webkit-transform: matrix(1.00004, 0, 0, 1.00004, 0, 50.02421); opacity: 1.00346; }
1535 72% { -webkit-transform: matrix(1.00002, 0, 0, 1.00002, 0, 50.01567); opacity: 1.00224; }
1536 76% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00941); opacity: 1.00134; }
1537 80% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00506); opacity: 1.00072; }
1538 84% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.00223); opacity: 1.00032; }
1539 88% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.0005); opacity: 1.00007; }
1540 92% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99956); opacity: 0.99994; }
1541 96% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99913); opacity: 0.99988; }
1542 100% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50); opacity: 1; } }
1543.bbm-modal--open { -webkit-animation-duration: 0.3s; -webkit-animation-name: bbm-open; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1544
1545/* Open a stacked modal */
1546@-webkit-keyframes bbm-stacked { 0% { -webkit-transform: matrix(0.99874, 0, 0, 0.99874, 0, 49.1187); opacity: 0.93705; }
1547 4% { -webkit-transform: matrix(0.99705, 0, 0, 0.99705, 0, 47.93192); opacity: 0.85228; }
1548 8% { -webkit-transform: matrix(0.99533, 0, 0, 0.99533, 0, 46.73078); opacity: 0.76648; }
1549 12% { -webkit-transform: matrix(0.99381, 0, 0, 0.99381, 0, 45.66645); opacity: 0.69046; }
1550 16% { -webkit-transform: matrix(0.99257, 0, 0, 0.99257, 0, 44.80009); opacity: 0.62858; }
1551 20% { -webkit-transform: matrix(0.99163, 0, 0, 0.99163, 0, 44.13933); opacity: 0.58138; }
1552 24% { -webkit-transform: matrix(0.99095, 0, 0, 0.99095, 0, 43.66342); opacity: 0.54739; }
1553 28% { -webkit-transform: matrix(0.99049, 0, 0, 0.99049, 0, 43.33951); opacity: 0.52425; }
1554 32% { -webkit-transform: matrix(0.99019, 0, 0, 0.99019, 0, 43.1325); opacity: 0.50946; }
1555 36% { -webkit-transform: matrix(0.99002, 0, 0, 0.99002, 0, 43.01034); opacity: 0.50074; }
1556 40% { -webkit-transform: matrix(0.98992, 0, 0, 0.98992, 0, 42.94639); opacity: 0.49617; }
1557 44% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92001); opacity: 0.49429; }
1558 48% { -webkit-transform: matrix(0.98988, 0, 0, 0.98988, 0, 42.91606); opacity: 0.494; }
1559 52% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92411); opacity: 0.49458; }
1560 56% { -webkit-transform: matrix(0.98991, 0, 0, 0.98991, 0, 42.93736); opacity: 0.49553; }
1561 60% { -webkit-transform: matrix(0.98993, 0, 0, 0.98993, 0, 42.95167); opacity: 0.49655; }
1562 64% { -webkit-transform: matrix(0.98995, 0, 0, 0.98995, 0, 42.96482); opacity: 0.49749; }
1563 68% { -webkit-transform: matrix(0.98997, 0, 0, 0.98997, 0, 42.97579); opacity: 0.49827; }
1564 72% { -webkit-transform: matrix(0.98998, 0, 0, 0.98998, 0, 42.98433); opacity: 0.49888; }
1565 76% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99059); opacity: 0.49933; }
1566 80% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99494); opacity: 0.49964; }
1567 84% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.99777); opacity: 0.49984; }
1568 88% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.9995); opacity: 0.49996; }
1569 92% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00044); opacity: 0.50003; }
1570 96% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00088); opacity: 0.50006; }
1571 100% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43); opacity: 0.5; } }
1572.bbm-modal--stacked { -webkit-animation-duration: 0.43333s; -webkit-animation-name: bbm-stacked; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1573
1574/* destroy a stacked modal */
1575@-webkit-keyframes bbm-stacked-reverse { 0% { -webkit-transform: matrix(0.99123, 0, 0, 0.99123, 0, 43.86266); opacity: 0.56162; }
1576 4% { -webkit-transform: matrix(0.99293, 0, 0, 0.99293, 0, 45.05306); opacity: 0.64665; }
1577 8% { -webkit-transform: matrix(0.99465, 0, 0, 0.99465, 0, 46.25785); opacity: 0.7327; }
1578 12% { -webkit-transform: matrix(0.99618, 0, 0, 0.99618, 0, 47.32543); opacity: 0.80896; }
1579 16% { -webkit-transform: matrix(0.99742, 0, 0, 0.99742, 0, 48.19443); opacity: 0.87103; }
1580 20% { -webkit-transform: matrix(0.99837, 0, 0, 0.99837, 0, 48.8572); opacity: 0.91837; }
1581 24% { -webkit-transform: matrix(0.99905, 0, 0, 0.99905, 0, 49.33456); opacity: 0.95247; }
1582 28% { -webkit-transform: matrix(0.99951, 0, 0, 0.99951, 0, 49.65946); opacity: 0.97568; }
1583 32% { -webkit-transform: matrix(0.99981, 0, 0, 0.99981, 0, 49.8671); opacity: 0.99051; }
1584 36% { -webkit-transform: matrix(0.99999, 0, 0, 0.99999, 0, 49.98963); opacity: 0.99926; }
1585 40% { -webkit-transform: matrix(1.00008, 0, 0, 1.00008, 0, 50.05377); opacity: 1.00384; }
1586 44% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08024); opacity: 1.00573; }
1587 48% { -webkit-transform: matrix(1.00012, 0, 0, 1.00012, 0, 50.08419); opacity: 1.00601; }
1588 52% { -webkit-transform: matrix(1.00011, 0, 0, 1.00011, 0, 50.07612); opacity: 1.00544; }
1589 56% { -webkit-transform: matrix(1.00009, 0, 0, 1.00009, 0, 50.06284); opacity: 1.00449; }
1590 60% { -webkit-transform: matrix(1.00007, 0, 0, 1.00007, 0, 50.04848); opacity: 1.00346; }
1591 64% { -webkit-transform: matrix(1.00005, 0, 0, 1.00005, 0, 50.03529); opacity: 1.00252; }
1592 68% { -webkit-transform: matrix(1.00004, 0, 0, 1.00004, 0, 50.02428); opacity: 1.00173; }
1593 72% { -webkit-transform: matrix(1.00002, 0, 0, 1.00002, 0, 50.01572); opacity: 1.00112; }
1594 76% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00944); opacity: 1.00067; }
1595 80% { -webkit-transform: matrix(1.00001, 0, 0, 1.00001, 0, 50.00508); opacity: 1.00036; }
1596 84% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.00223); opacity: 1.00016; }
1597 88% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50.0005); opacity: 1.00004; }
1598 92% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99956); opacity: 0.99997; }
1599 96% { -webkit-transform: matrix(1, 0, 0, 1, 0, 49.99912); opacity: 0.99994; }
1600 100% { -webkit-transform: matrix(1, 0, 0, 1, 0, 50); opacity: 1; } }
1601.bbm-modal--stacked-reverse { -webkit-animation-duration: 0.43333s; -webkit-animation-name: bbm-stacked-reverse; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1602
1603/* destroy a modal */
1604@-webkit-keyframes bbm-destroy { 0% { -webkit-transform: matrix(0.99874, 0, 0, 0.99874, 0, 49.1187); opacity: 0.8741; }
1605 4% { -webkit-transform: matrix(0.99705, 0, 0, 0.99705, 0, 47.93192); opacity: 0.70456; }
1606 8% { -webkit-transform: matrix(0.99533, 0, 0, 0.99533, 0, 46.73078); opacity: 0.53297; }
1607 12% { -webkit-transform: matrix(0.99381, 0, 0, 0.99381, 0, 45.66645); opacity: 0.38092; }
1608 16% { -webkit-transform: matrix(0.99257, 0, 0, 0.99257, 0, 44.80009); opacity: 0.25716; }
1609 20% { -webkit-transform: matrix(0.99163, 0, 0, 0.99163, 0, 44.13933); opacity: 0.16276; }
1610 24% { -webkit-transform: matrix(0.99095, 0, 0, 0.99095, 0, 43.66342); opacity: 0.09477; }
1611 28% { -webkit-transform: matrix(0.99049, 0, 0, 0.99049, 0, 43.33951); opacity: 0.0485; }
1612 32% { -webkit-transform: matrix(0.99019, 0, 0, 0.99019, 0, 43.1325); opacity: 0.01893; }
1613 36% { -webkit-transform: matrix(0.99002, 0, 0, 0.99002, 0, 43.01034); opacity: 0.00148; }
1614 40% { -webkit-transform: matrix(0.98992, 0, 0, 0.98992, 0, 42.94639); opacity: -0.00766; }
1615 44% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92001); opacity: -0.01143; }
1616 48% { -webkit-transform: matrix(0.98988, 0, 0, 0.98988, 0, 42.91606); opacity: -0.01199; }
1617 52% { -webkit-transform: matrix(0.98989, 0, 0, 0.98989, 0, 42.92411); opacity: -0.01084; }
1618 56% { -webkit-transform: matrix(0.98991, 0, 0, 0.98991, 0, 42.93736); opacity: -0.00895; }
1619 60% { -webkit-transform: matrix(0.98993, 0, 0, 0.98993, 0, 42.95167); opacity: -0.0069; }
1620 64% { -webkit-transform: matrix(0.98995, 0, 0, 0.98995, 0, 42.96482); opacity: -0.00503; }
1621 68% { -webkit-transform: matrix(0.98997, 0, 0, 0.98997, 0, 42.97579); opacity: -0.00346; }
1622 72% { -webkit-transform: matrix(0.98998, 0, 0, 0.98998, 0, 42.98433); opacity: -0.00224; }
1623 76% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99059); opacity: -0.00134; }
1624 80% { -webkit-transform: matrix(0.98999, 0, 0, 0.98999, 0, 42.99494); opacity: -0.00072; }
1625 84% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.99777); opacity: -0.00032; }
1626 88% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 42.9995); opacity: -7e -5; }
1627 92% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00044); opacity: 6.0 e-05; }
1628 96% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43.00088); opacity: 0.00012; }
1629 100% { -webkit-transform: matrix(0.99, 0, 0, 0.99, 0, 43); opacity: 0; } }
1630.bbm-modal--destroy { -webkit-animation-duration: 0.43333s; -webkit-animation-name: bbm-destroy; -webkit-animation-timing-function: linear; -webkit-animation-fill-mode: both; -webkit-transform-origin: 50% 50%; -webkit-backface-visibility: hidden; }
1631
1632.admin-quicklinks { list-style: none; z-index: 150; position: fixed; bottom: 10px; right: 10px; height: 45px; width: 47px; margin: 0; padding: 5px; border: 2px solid #cb272c; border-radius: 5px; background: #fff; font-size: 12px; text-align: right; box-sizing: content-box; transition: height 200ms ease-out, width 200ms ease-out, padding 200ms ease-out; }
1633.admin-quicklinks .hb-bundle { position: fixed; color: #cb272c; right: 16px; font-size: 45px; }
1634.admin-quicklinks:hover { height: auto; width: auto; padding: 10px; }
1635.admin-quicklinks:hover .hb-bundle { display: none; }
1636.admin-quicklinks:hover .menu-item { display: block; width: auto; }
1637.admin-quicklinks .menu-item { display: none; width: 0; padding: 5px 0; }
1638.admin-quicklinks .quicklink { color: #000; text-decoration: none; }
1639
1640.admin-tiny-link { position: relative; overflow: visible; font-size: 12px; color: white !important; z-index: 100; text-decoration: none; }
1641.admin-tiny-link i { position: absolute; left: -10px; top: -10px; text-shadow: 0 2px 3px rgba(0, 0, 0, 0.6); transform: scale(1); transform-origin: center; transition: text-shadow .3s ease, transform .3s ease; }
1642.admin-tiny-link i:hover { text-shadow: 0 3px 5px rgba(0, 0, 0, 0.4); transform: scale(2); }
1643.admin-tiny-link.disabled { display: none; }
1644
1645.early-unlocks-box-art-display { display: flex; justify-content: center; background-image: url("//humblebundle-a.akamaihd.net/static/hashed/c4e776a095b10a28a80f4130cf67f34df6987047.png"); background-size: contain; background-position: center center; background-repeat: no-repeat; height: 346px; }
1646.early-unlocks-box-art-display.nocrates { background-image: none; }
1647.early-unlocks-box-art-display.multiple { background-image: url("//humblebundle-a.akamaihd.net/static/hashed/14be0a5788d217ac41af9afa55c3ffdff9c23de3.png"); }
1648.early-unlocks-box-art-display.margin-bottom { margin-bottom: 50px; }
1649
1650.early-unlock-box-art { padding-top: 80px; }
1651
1652.early-unlock-showcase { background-color: #3B3E48; background-position: center; background-repeat: no-repeat; background-size: 100% 100%; margin-top: -56px; padding: 56px 0 50px; }
1653
1654.early-unlock-info { width: 800px; text-align: center; margin: auto; }
1655.early-unlock-info .humble-monthly-10-note span { font-size: 16pt; font-weight: bold; position: relative; top: -16px; margin-left: 16px; }
1656.early-unlock-info .humble-monthly-10-note span a { color: white; text-decoration: none; }
1657
1658.early-unlock-game-text { font-size: 12pt; line-height: 18pt; width: 580px; margin: auto; margin-bottom: 30px; }
1659
1660.early-unlocks-box-art-display .early-unlock-box-art-wrapper { margin: 0 2em; position: relative; /** Modified from https://jsfiddle.net/josedvq/3HG6d/ **/ }
1661.early-unlocks-box-art-display .early-unlock-box-art-wrapper .early-unlock-box-art-msrp-wrapper { position: absolute; bottom: 180px; left: -9px; }
1662.early-unlocks-box-art-display .early-unlock-box-art-wrapper .early-unlock-box-art-msrp-wrapper .early-unlock-box-art-msrp-display { background-color: #00a0e8; padding: 10px; font-size: 16px; font-weight: bold; color: white; text-align: center; }
1663.early-unlocks-box-art-display .early-unlock-box-art-wrapper .box-art-msrp-triangle { width: 0; height: 0; border-top: 10px solid #1d508b; border-left: 20px solid transparent; }
1664
1665.humble-monthly .header-timer { margin-bottom: 25px; }
1666.humble-monthly article section.header-box-art-display { margin-top: 50px; }
1667.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper { display: flex; height: 100%; margin: 0 auto; position: relative; max-width: 800px; width: 100%; }
1668.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .box-art-wrapper { display: flex; justify-content: center; height: inherit; margin: 0 auto; }
1669.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .box-art-wrapper .box-art { height: 100%; max-height: 470px; margin-left: 1em; }
1670.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .box-art-wrapper .box-art:first-of-type { margin-left: 0; }
1671.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .timer-wrapper .subscribe { display: inline-block; position: relative; text-align: center; top: -160px; }
1672.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .timer-wrapper .subscribe .button.subscribed { margin-top: 25%; }
1673.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .box-art-msrp-text { background-color: #FF8F59; bottom: 4em; box-shadow: 0 15px 35px rgba(0, 0, 0, 0.5); left: 50%; padding: .5em 1em; position: absolute; text-align: center; transform: translateX(-50%); z-index: 10; }
1674.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .box-art-msrp-text .base-price { display: block; font-size: 1.3em; font-weight: bold; }
1675.humble-monthly article section.header-box-art-display .inner-early-unlock-wrapper .box-art-msrp-text .msrp-text { opacity: .8; text-decoration: line-through; }
1676.humble-monthly.mobile .header-timer { margin-bottom: 25px; text-align: center; }
1677.humble-monthly.mobile article section.header-box-art-display .inner-early-unlock-wrapper { flex-direction: column; height: 205px; }
1678.humble-monthly.mobile article section.header-box-art-display .inner-early-unlock-wrapper .box-art-wrapper { height: 100%; order: 2; position: static; width: 100%; }
1679.humble-monthly.mobile article section.header-box-art-display .inner-early-unlock-wrapper .box-art-wrapper .box-art { display: block; height: auto; left: auto; max-height: 100%; top: 3.5em; z-index: 3; }
1680
1681.pagination { margin: 10px 0; white-space: nowrap; text-align: left; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
1682.pagination .jump-to-page { cursor: pointer; display: inline-block; padding: 5px 10px; border-radius: 3px; background: #484f5c; }
1683
1684.charity-selection { height: 523px; }
1685.charity-selection .cyoc-spinner-dark { display: inline-block; }
1686.charity-selection .cyoc-spinner-light { display: none; }
1687.charity-selection h1, .charity-selection h2, .charity-selection h3, .charity-selection p, .charity-selection a { color: #eeeeee; }
1688.charity-selection h2 { font-size: 18px; font-weight: bold; }
1689.charity-selection .charity-results .charity-preview { padding-left: 0; width: 117px; text-align: center; }
1690.charity-selection .charity-results .charity-preview .charity-img { width: 64px; height: 64px; position: relative; margin: auto; }
1691.charity-selection .charity-results .charity-preview .charity-name { position: relative; width: 124px; text-align: center; padding-bottom: 0; margin-top: 4px; }
1692.charity-selection .charity-results .charity-preview .charity-name .see-details { cursor: pointer; }
1693.charity-selection .charity-results .charity-preview .charity-name h4 { width: 124px; font-size: 14px; margin-top: 10px; }
1694.charity-selection .charity-results .charity-preview .select-charity { background: #A1A7B2; color: white; margin: auto; position: relative; left: -4px; }
1695.charity-selection .pagination .jump-to-page { background: #393D49; }
1696.charity-selection .pagination .jump-to-page:hover, .charity-selection .pagination .jump-to-page.current { background: #1E2127; }
1697
1698.order-form .show-charity-selector { text-decoration: underline; cursor: pointer; }
1699.order-form .custom-values-inner { overflow: visible; }
1700.order-form .custom-values-inner .subsplit-wrapper { overflow: visible; }
1701.order-form .partnership-line { display: none; }
1702.order-form .subsplit-wrapper .cyoc-wrapper { left: 0px; }
1703.order-form .subsplit-wrapper .cyoc-wrapper .top-arrow { left: 250px; }
1704.order-form .cyoc-wrapper { float: left; background: #E4E7ED; height: 354px; display: none; position: relative; width: 897px; left: -114px; padding: 20px; border-top: 1px solid #A6A9B2; border-bottom: 1px solid #A6A9B2; margin-bottom: 10px; }
1705.order-form .cyoc-wrapper .top-arrow { position: relative; top: -31px; left: 180px; margin-left: -12px; -webkit-backface-visibility: hidden; background-position: center; width: 23px; height: 11px; background-image: url("//humblebundle-a.akamaihd.net/static/hashed/189096a19ea989ec5b84f8edd0e9efa61bb4c476.png"); background-image: -webkit-image-set(url("//humblebundle-a.akamaihd.net/static/hashed/189096a19ea989ec5b84f8edd0e9efa61bb4c476.png") 1x, url("//humblebundle-a.akamaihd.net/static/hashed/bbe05e5bac2f08dabc6100b32ca67f32c34e044d.png") 2x); }
1706.order-form .cyoc-wrapper h1, .order-form .cyoc-wrapper h2, .order-form .cyoc-wrapper h3, .order-form .cyoc-wrapper p, .order-form .cyoc-wrapper a { color: #494f5c; }
1707.order-form .cyoc-wrapper .charity-search label.query { width: 280px; }
1708.order-form .cyoc-wrapper .cyoc-spinner-dark { display: none; }
1709.order-form .cyoc-wrapper .cyoc-spinner-light { display: inline-block; }
1710.order-form .cyoc-wrapper .pagination { color: black; }
1711.order-form .cyoc-wrapper .pagination .jump-to-page { background: #CBD0DA; }
1712.order-form .cyoc-wrapper .pagination .jump-to-page:hover, .order-form .cyoc-wrapper .pagination .jump-to-page.current { background: #a1a5ad; }
1713.order-form .splits-holder > .cyoc-wrapper { left: -64px; }
1714
1715.cyoc-selector-slide { display: none; }
1716
1717.slideout-expandable { background: #33373e; color: #eeeeee; border-top: 1px solid #24282f; border-bottom: 1px solid #24282f; position: relative; padding: 30px 0; -webkit-backface-visibility: hidden; }
1718.slideout-expandable .selected-game-arrow.top-arrow { top: -35px; left: 50%; opacity: 1; }
1719
1720.slideout-expandable .overflow-wrapper { overflow: hidden; }
1721
1722.charity-img { flex-shrink: 0; }
1723
1724.charity-img { width: 100px; height: 100px; display: inline-block; background-repeat: no-repeat; background-size: contain; background-position: center center; border-radius: 3px; overflow: hidden; }
1725
1726.charity-popup { position: fixed; max-width: 750px; width: 100%; background-color: white; border-radius: 3px; padding: 20px; padding-bottom: 30px; z-index: 1000; top: 50%; left: 50%; transform: translate(-50%, -50%); max-height: 100%; overflow-y: scroll; }
1727.charity-popup .charity-info-wrapper { padding: 20px; }
1728.charity-popup a { color: #17a1e5; font-weight: bold; }
1729.charity-popup .charity-logo { max-width: 100%; max-height: 150px; }
1730.charity-popup h2 { font-weight: normal; }
1731.charity-popup p { margin: 10px 0; font-size: 15px; line-height: 1.5; }
1732.charity-popup .charity-title { font-size: 16px; }
1733.charity-popup .charity-description { margin-top: 10px; font-size: 15px; line-height: 1.5; padding-bottom: 15px; }
1734.charity-popup .close-button-holder { height: 0; position: relative; overflow: visible; }
1735.charity-popup .close-button-holder .close-button { position: absolute; right: -10px; top: -10px; cursor: pointer; }
1736
1737.charity-account-cta-message { display: inline-block; position: fixed; left: 0; right: 0; bottom: -100px; max-width: 700px; width: 100%; padding: 18px 40px; margin: 0 auto; box-sizing: border-box; border-radius: 3px 3px 0 0; background: #d5d9e1; border: 1px solid rgba(161, 167, 178, 0.5); box-shadow: 0 -1px 8px rgba(0, 0, 0, 0.3); text-align: center; z-index: 10; }
1738.charity-account-cta-message p { margin: 0; }
1739
1740#site-xpromo-banner .headline, #site-xpromo-banner .body { width: 500px; font-family: 'Sofia Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif; text-shadow: 0.05em 0.05em 0.05em rgba(0, 0, 0, 0.65); }
1741#site-xpromo-banner .headline { font-size: 24px; font-weight: 900; line-height: 1.25em; margin: 0 0 0.75em 0; }
1742#site-xpromo-banner .body { font-weight: 400; margin: 0 0 1em 0; }
1743#site-xpromo-banner .logo, #site-xpromo-banner .cta { max-width: 500px; }
1744#site-xpromo-banner .logo { max-height: 150px; margin: 0 0 0.75em 0; }
1745#site-xpromo-banner .cta { white-space: nowrap; }
1746#site-xpromo-banner .banner { overflow: hidden; transition: height 500ms ease-in-out; }
1747#site-xpromo-banner .banner.fadeout { height: 0 !important; }
1748#site-xpromo-banner .banner .banner-content:last-child { margin-bottom: 0; }
1749@media (max-width: 500px) { #site-xpromo-banner .banner .headline, #site-xpromo-banner .banner .body { width: 320px; }
1750 #site-xpromo-banner .banner .logo, #site-xpromo-banner .banner .cta { max-width: 320px; } }
1751#site-xpromo-banner.is-stuck .banner { position: fixed !important; z-index: 100000; }
1752#site-xpromo-banner.is-stuck.top .banner { top: 0; }
1753#site-xpromo-banner.is-stuck.bottom .banner { bottom: 0; }
1754#site-xpromo-banner.alert-banner .banner { height: 45px; }
1755#site-xpromo-banner.alert-banner .banner .body { font-size: 18px; }
1756#site-xpromo-banner.small-banner .banner { height: 125px; }
1757#site-xpromo-banner.small-banner .banner .logo { max-height: 50px; }
1758#site-xpromo-banner.small-banner .banner .body { font-size: 18px; line-height: 1.2em; }
1759#site-xpromo-banner.medium-banner .banner { height: 310px; }
1760#site-xpromo-banner.medium-banner .banner .body { font-size: 20px; line-height: 1.75em; }
1761#site-xpromo-banner.large-banner .banner { height: 450px; }
1762#site-xpromo-banner.large-banner .banner .body { font-size: 18px; line-height: 1.5em; }
1763#site-xpromo-banner .banner { background-position: center; background-repeat: no-repeat; background-size: cover; position: relative; width: 100%; }
1764#site-xpromo-banner .banner .dismiss-button { color: white; cursor: pointer; position: absolute; right: 0; top: 0; padding: 1em; text-shadow: 0 0 0.2em black; }
1765#site-xpromo-banner .banner .dismiss-button:after { content: '✕'; font-size: 1.2em; line-height: 1; }
1766#site-xpromo-banner .banner a.page-banner-link { align-items: center; color: white; display: flex; flex-direction: column; height: 100%; justify-content: center; position: relative; text-align: center; text-decoration: none; width: 100%; }
1767
1768html { box-sizing: border-box; }
1769
1770*, *::after, *::before { box-sizing: inherit; }
1771
1772body { background: #333; min-width: 880px; -webkit-font-smoothing: antialiased; }
1773
1774#dlheader { position: relative; margin: 0 auto 20px auto; min-width: 880px; }
1775
1776#logo { margin: 30px auto 0 auto; position: static; }
1777
1778#logo img { display: block; margin: 20px auto; max-width: 640px; }
1779
1780/* page content */
1781.unlock-time { color: #7B818C; font-size: 16px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 500; margin: 0 auto 8px; text-align: center; }
1782
1783#papers-top, #papers-bottom { background: url("//humblebundle-a.akamaihd.net/static/hashed/4396bdf4831e7f1368dcdb5a8ec237f1b42bdbc2.png") no-repeat; }
1784
1785#papers-top { position: absolute; top: 0; left: 0; height: 280px; width: 831px; }
1786
1787#papers-bottom { position: absolute; bottom: 0; left: 0; height: 22px; width: 831px; background-position: 0 bottom; }
1788
1789#papers-mid { position: absolute; top: 280px; bottom: 22px; left: 0; width: 831px; background: url("//humblebundle-a.akamaihd.net/static/hashed/277729198acf769d0141fb22563b3b2b3709c9fb.png") repeat-y; }
1790
1791#papers-content { position: relative; width: 762px; margin: 0 auto; padding: 30px 0; min-height: 290px; }
1792
1793#download-page-wrapper { width: 831px; margin: 0 auto 24px auto; }
1794
1795#main { position: relative; color: #4c4c4c; box-sizing: content-box; }
1796
1797.order-adder-whitebox { font-weight: normal; }
1798
1799/* spiel */
1800#spiel { /* Workaround for Android browser's bizarre "auto-fit pages" default setting https://code.google.com/p/android/issues/detail?id=40186 */ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==) no-repeat; }
1801
1802.download-social-alignment { display: flex; flex-direction: center; align-items: center; width: 100%; }
1803
1804#videopaperclip { left: -57px !important; }
1805
1806#payment-amount img { margin-bottom: -5px; }
1807
1808.instruction-expand { color: #5D801A !important; text-align: center; display: block; }
1809
1810.instructions { display: none; }
1811
1812.steaminfo { font-size: 16px; cursor: pointer; }
1813
1814.key-expander .nosteam { font-weight: normal; width: 70%; margin: 0 auto; padding: 1em 0; }
1815
1816.descitem a.steaminfo { text-decoration: none; }
1817
1818.youtubeCentered { margin: auto; width: 580px; }
1819
1820.shrinksizer.instructionsteps { padding: 16px 20px; }
1821
1822.magic-or { padding-left: 230px; }
1823
1824#ubuntuinstructions { padding-top: 20px; text-align: center; }
1825
1826#ubuntuinstructions h2 { padding-bottom: 10px; }
1827
1828#share-box { text-align: center; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75); line-height: 21px; font-size: 14px; }
1829
1830.ebookinstructions { display: block; font-weight: normal; }
1831
1832.ebookinstructions .open-in-external-window { color: #5d801a; display: block; font-size: 16px; font-weight: bold; text-align: center; }
1833
1834.ebookinstructions .slide-down-trigger { font-weight: bold; }
1835
1836.ebookinstructions .slide-down { font-size: 13px; line-height: 170%; }
1837
1838.ebookinstructions .steptext { padding-top: 6px; }
1839
1840.ebookinstructions h2 { font-size: 20px; font-weight: bold; margin-bottom: 1em; }
1841
1842.ebookinstructions h3 { font-size: 120%; font-weight: bold; margin-top: 0; padding-top: 0; }
1843
1844.ebookinstructions .pre-box { font-size: 130%; text-align: center; }
1845
1846.ebookinstructions .sms-form { width: 400px; }
1847
1848#send-email-message { color: #468847; padding-left: 2px; }
1849
1850#send-email-message.error { color: #b94a48; }
1851
1852#ebook-email-form { position: relative; }
1853
1854#email-kindle { width: 128px; }
1855
1856#send-email { top: 10px; right: 10px; }
1857
1858#ebook-email-form .email-details { font-size: 10px; margin-bottom: 0; line-height: 14px; }
1859
1860#download-page-wrapper a, #download-page-wrapper a:visited { color: #5d801a; }
1861
1862.whitecontent a { font-weight: bold; }
1863
1864.small .flexbtn { min-width: 50px; }
1865
1866.small .dldetails { width: 60px; }
1867
1868#download-page-wrapper .order-form { border: 1px solid #b5b8bf; }
1869#download-page-wrapper .order-form a { color: inherit; }
1870
1871.media-object { display: block; }
1872.media-object::after { clear: both; content: ""; display: table; }
1873.media-object .avatar { float: left; margin-right: 10px; }
1874.media-object .details { float: left; }
1875
1876.credit { padding: 30px; }
1877.credit p { margin: 0; }
1878.credit p + p { margin-top: 1.2em; }
1879.credit .credit-expiry { font-style: italic; }
1880
1881.coupon .column { box-sizing: border-box; }
1882.coupon .coupon-info, .coupon .redeem-product { padding: 0 90px; }
1883.coupon .coupon-info { display: flex; justify-content: space-between; align-items: center; line-height: 1.35; }
1884.coupon .coupon-info .coupon-name { font-size: 16px; font-weight: bold; max-width: 438px; }
1885.coupon .coupon-info .coupon-name .admin-tiny-link i { position: relative; }
1886.coupon .coupon-info .coupon-icon { max-width: 32px; max-height: 32px; margin-top: 5px; }
1887.coupon .coupon-info .coupon-terms { color: inherit !important; }
1888.coupon .coupon-info .expired { color: #d0021b; }
1889.coupon .coupon-info .discount-price { box-sizing: border-box; border-radius: 3px; padding: 5px 10px; display: inline-block; border: 1px solid #d0021b; font-weight: bold; font-size: 12px; color: #d0021b; margin-left: 10px; }
1890.coupon .coupon-info .discount-amount { color: #d0021b; }
1891.coupon .redeem-product { margin-top: 20px; padding-top: 10px; margin-bottom: -10px; border-top: 1px solid #e4e7ed; text-align: right; font-weight: bold; }
1892.coupon .platforms { margin: 0 20px 0 0; text-align: left; display: inline-block; }
1893.coupon .platforms li > i { color: inherit; display: inline-block; margin-left: 5px; }
1894.coupon .platforms .platform-info { top: 35px; border: 1px solid #e4e7ed; box-shadow: 0 1px 1px #e4e7ed; }
1895
1896#monthly-coupon h3, #trove-promo h3 { font-size: 1.3em; margin: 0; }
1897#monthly-coupon p, #trove-promo p { font-size: 1.1em; font-weight: 300; margin: .3em 0 0; }
1898#monthly-coupon .button-container, #trove-promo .button-container { padding-top: 20px; }
1899#monthly-coupon .button-container a, #trove-promo .button-container a { white-space: nowrap; }
1900#monthly-coupon .image-wrapper, #trove-promo .image-wrapper { flex-basis: 70px; flex-shrink: 0; padding-right: 20px; text-align: right; }
1901#monthly-coupon .coupon-details, #monthly-coupon .trove-details, #trove-promo .coupon-details, #trove-promo .trove-details { flex-basis: 100%; flex-shrink: 1; }
1902
1903#monthly-coupon.wrapper { display: flex; flex-direction: row; justify-content: space-around; }
1904#monthly-coupon .hb-bundle { color: #cb272c; font-size: 60px; }
1905#monthly-coupon .coupon-details .coupon-info-link { color: #757b86; display: inline-block; margin: 5px 0; }
1906#monthly-coupon .coupon-details .tooltip-right { color: #3b3e48 !important; }
1907#monthly-coupon .coupon-details .tooltip-right:before { border-right-color: #333; top: 5px; }
1908#monthly-coupon .coupon-details .tooltip-right:after { background-color: #333; color: #fff; }
1909#monthly-coupon .centered { text-align: center; }
1910#monthly-coupon .store-logo { margin-bottom: .2em; width: 200px; }
1911#monthly-coupon .button { color: white !important; }
1912
1913#trove-promo.wrapper { display: flex; justify-content: space-around; }
1914#trove-promo .trove-logo { height: 60px; }
1915#trove-promo .trove-details { padding-top: 10px; }
1916
1917/* Additional order adder styling */
1918.order-form .splits-holder > .cyoc-wrapper { left: -72px; width: 680px; overflow-y: scroll; }
1919
1920.order-form .subsplit-wrapper .cyoc-wrapper { left: -62px; width: 680px; overflow-y: scroll; }
1921
1922.charity-selection .charity-results .charity-name h4 { overflow-y: hidden; }
1923
1924/* We don't want this functionality on the order adder */
1925.js-remove-charity { display: none; }
1926
1927 #heading-time-remaining { display: none; }
1928
1929#signup-email { width: 334px; height: 42px; line-height: 42px; background: none; border: none; color: white; font-size: 18px; font-weight: bold; z-index: 15; }
1930
1931
1932 .green-button { background-image: linear-gradient(to bottom, #e0ffc2 0%, #b1e37f 100%); border: 1px solid #a7c28c; border-radius: 4px; box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5), 0 1px 0 0 white; color: #42661e; cursor: pointer; display: inline-block; font-weight: bold; margin: 0 0 0 5px; min-width: 50px; padding: 5px 8px 5px 8px; text-align: center; text-shadow: 0 1px rgba(255, 255, 255, 0.6); }
1933.green-button:hover:not(disabled) { background: #b1e37f; }
1934.green-button:disabled, .green-button.disabled { cursor: default; opacity: 0.4; }
1935
1936.gray-button { background-image: linear-gradient(to bottom, #f5f5f5 0%, #dedede 100%); border: 1px solid #bbb; border-radius: 4px; box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5), 0 1px 0 0 white; color: #444; cursor: pointer; display: inline-block; font-weight: bold; margin: 0 0 0 5px; min-width: 50px; padding: 5px 8px 5px 8px; text-align: center; text-shadow: 0 1px rgba(255, 255, 255, 0.6); }
1937
1938a:hover .gray-button { background: #e4e4e4; }
1939
1940.button-link { cursor: pointer; text-decoration: none; }
1941.button-link:disabled, .button-link.disabled { pointer-events: none; }
1942
1943input[type="number"].classy-input, input[type="password"].classy-input, input[type="tel"].classy-input, input[type="text"].classy-input { border: 1px solid #ccc; box-shadow: inset 0 1px 0 #eee,#fff 0 1px 0; margin: 0; padding: 7px; border-radius: 3px; background-color: white; color: #999; }
1944
1945.classy-input[disabled='disabled'] { background: #ccc; color: #333; }
1946
1947.info-tooltip > i { font-size: .8em; opacity: 0.7; transition: all 0.1s linear; }
1948.info-tooltip:hover > i, .info-tooltip:focus > i { opacity: 1; }
1949 #settings .indicator {
1950 background: url(https://humblebundle-a.akamaihd.net/static/hashed/e73d51c16b07d083026843ceda9c22056b9d04a2.gif) no-repeat;
1951 display: none;
1952 padding: 0 0 0 0;
1953 margin-left: 10px;
1954 top: 3px;
1955}
1956
1957#settings .indicator.on {
1958 display: inline-block;
1959}
1960#settings input[type=submit] {
1961 margin-top: 5px;
1962}
1963#settings .submitholder {
1964 height: 30px;
1965 margin-left: 330px;
1966 position: relative;
1967}
1968#settings .account-claimbutton,
1969#settings .account-claimbutton-signedout {
1970 padding: 0 0 0 33px;
1971 line-height: 28px;
1972}
1973#settings .account-claimbutton div,
1974#settings .account-claimbutton-signedout div {
1975 padding: 0;
1976}
1977
1978#change-email {
1979 position: absolute;
1980 left: 16px;
1981 bottom: 26px;
1982 color: #666;
1983 font-size: 10px;
1984}
1985#change-email-form{
1986 width:280px;
1987 position:absolute;
1988 bottom:-10px;
1989 left:-40px;
1990 background:white;
1991 border-radius:5px;
1992 padding:6px 6px 6px 16px;
1993 border:black solid 1px;
1994 z-index:200;
1995 box-shadow: 2px 2px 5px 1px rgba(0,0,0,0.5);
1996 display:none;
1997}
1998#change-email-form .alignlabel{
1999 text-align: right;
2000 width:132px;
2001 float:left;
2002 padding-top:3px;
2003}
2004#change-email-form .cebuttons {
2005 text-align:center;
2006 padding-top:4px;
2007}
2008 /* tabbed-key-redeem.css */
2009.expandkeys-new {
2010 display:block;
2011 overflow:hidden;
2012 text-align:center;
2013 margin-bottom:8px;
2014 color:#5d801a !important;
2015 font-size:16px;
2016}
2017.keytab {
2018 display: none;
2019}
2020
2021.keytabs {
2022 padding: 8px 0 7px 0;
2023 margin: -48px 0 28px -10px;
2024 text-align: left;
2025 width: 720px;
2026 line-height: 15px;
2027}
2028
2029.keytabs a {
2030 text-decoration: none;
2031 color: #666;
2032 margin: 0;
2033}
2034
2035.keytabs li.activekeytab a {
2036 color: #333;
2037}
2038
2039.keytabs li {
2040 display: inline;
2041 list-decoration: none;
2042 margin: 0 -1px 0 0;
2043 padding: 9px 20px 5px 20px;
2044 border: 1px solid #aaa;
2045 border-radius: 5px 5px 0 0;
2046 -moz-border-radius: 5px 5px 0 0;
2047 -webkit-border-radius: 5px 5px 0 0;
2048 -ms-border-radius: 5px 5px 0 0;
2049 -o-border-radius: 5px 5px 0 0;
2050 background: #eee;
2051 font-weight: bold;
2052}
2053
2054.keytabs li.activekeytab {
2055 background: white;
2056 border-bottom: 1px solid white;
2057}
2058
2059#keystation {
2060 margin-top: 40px;
2061}
2062
2063.shrinksizer-new {
2064 display:none;
2065 overflow: hidden;
2066}
2067
2068.redeeminstructions {
2069 margin-bottom: 1em;
2070}
2071
2072.instructions_html, .instructions_html a{
2073 color: #5D801A;
2074}
2075.urlredeemlink {
2076 text-align: center;
2077 margin: auto;
2078 width:200px;
2079}
2080
2081/* Custom styling for store keys */
2082.overgrowthspf_link {
2083 color: #5D801A;
2084 font-size: 15px;
2085}
2086.overgrowthspf_instruct {
2087 padding-top: 10px;
2088}
2089 /* stats.css */
2090.stats-box {
2091 line-height: 24px;
2092 position: relative;
2093 font-weight: normal;
2094 font-size: 12px;
2095}
2096
2097.stats-box h4 {
2098 font-size: 18px;
2099 font-weight: normal;
2100 margin: 0 0 14px 0;
2101}
2102
2103.stats-box dd {
2104 margin-top: -23px;
2105 text-align: right;
2106 height: 23px;
2107}
2108
2109.stats-pre-columns {
2110 width: 33.33333%;
2111 margin-bottom: 2em;
2112}
2113
2114.stats-group-pre-columns {
2115 display: inline-block;
2116 width: 100%;
2117}
2118
2119.stats-col-1-of-3,
2120.stats-col-2-of-3,
2121.stats-col-3-of-3 {
2122 box-sizing: border-box;
2123 -moz-box-sizing: border-box;
2124 -webkit-box-sizing: border-box;
2125 width: 33.33333%;
2126 float: left;
2127 position: relative;
2128}
2129
2130.stats-col-1-of-3 {
2131 padding-right: 20px;
2132}
2133
2134.stats-col-2-of-3 {
2135 padding-right: 10px;
2136 padding-left: 10px;
2137}
2138
2139.stats-col-3-of-3 {
2140 padding-left: 20px;
2141}
2142
2143.stats-box:after {
2144 content: '';
2145 display: block;
2146 clear: both;
2147}
2148
2149.stats-info, .pubnub-promo {
2150 color: #ccc;
2151 font-style: italic;
2152 font-size: 10px;
2153 line-height: 12px;
2154 margin: 0;
2155}
2156
2157.stats-info {
2158 margin-top: 14px;
2159 cursor: help;
2160}
2161
2162.pubnub-promo {
2163 margin-top: -12px;
2164 text-align: right;
2165}
2166
2167.piechart {
2168 margin: -4px -11px;
2169}
2170
2171.chartcolor {
2172 display: inline-block;
2173 height: 12px;
2174 margin-right: 4px;
2175 width: 12px;
2176}
2177
2178.chartlegend {
2179 position: absolute;
2180 top: 78px;
2181 left: 180px;
2182 margin: 0;
2183 padding: 0;
2184 list-style: none;
2185 white-space: nowrap;
2186}
2187
2188.stats-box .contributor-list {
2189 line-height: 19px;
2190 margin: 0 0 0 -8px;
2191}
2192.stats-box .contributor-list dd {
2193 margin-top: -19px;
2194 height: 19px;
2195}
2196
2197.stats-box .contributor-list dt {
2198 position: relative;
2199}
2200
2201.contributor-list .number {
2202 width: 20px;
2203 text-align: right;
2204 display: block;
2205}
2206
2207.contributor-list .contributor-name {
2208 overflow: hidden;
2209 text-overflow: ellipsis;
2210 white-space: nowrap;
2211 position: absolute;
2212 top: 0;
2213 bottom: 0;
2214 left: 28px;
2215 right: 70px;
2216 display: block;
2217}
2218
2219.contributor-list a,
2220.contributor-list a:visited {
2221 color: #0072e6;
2222 font-weight: bold;
2223 text-decoration: none;
2224}
2225
2226/* single platform version with no pie chart */
2227.stats-box .contributor-list.short {
2228 line-height: 24px;
2229 margin-left: -8px;
2230}
2231.stats-box .contributor-list.short dd {
2232 margin-top: -24px;
2233}
2234.stats-box .contributor-list.noheading {
2235 margin-top: 38px;
2236}
2237 /** Styles for the SteamRedeemer module, used to display a user's Steam keys on an order's associated download page. */
2238.sr-widget .sr-widget-header { margin-bottom: 13px; }
2239.sr-widget .sr-widget-content { width: 70%; margin: auto; }
2240
2241.sr-user .sr-user-button { display: flex; align-items: center; float: right; padding: 2px 14px; border-radius: 3px; background-color: #ededed; background: linear-gradient(to top, #e6e6e6, #f4f4f4); border: 1px solid #d8d8d8; cursor: pointer; }
2242.sr-user .sr-user-button.sr-linked { cursor: default; }
2243.sr-user .sr-user-button .sr-user-button-icon { margin: 0 5px; }
2244.sr-user .sr-user-button .sr-user-button-text { font-weight: normal; }
2245
2246.sr-key .custom-instruction { margin-top: 10px; }
2247.sr-key .sr-key-heading { font-size: 17px; }
2248.sr-key .sr-key-heading .sr-key-heading-alert { position: relative; display: inline-block; color: #17A1E5; }
2249.sr-key .sr-key-heading .sr-key-heading-alert .sr-key-heading-alert-help-text { width: 150px; font-size: 13px; position: absolute; top: 3px; left: 20px; }
2250.sr-key .sr-key-heading .admin-tiny-link i { position: relative; }
2251.sr-key .sr-key-content-region { margin: 8px 0 23px; }
2252
2253.sr-unredeemed { display: flex; justify-content: space-between; }
2254.sr-unredeemed .sr-unredeemed-button { display: flex; align-items: center; justify-content: center; margin: 0 5px; width: 100%; cursor: pointer; text-align: center; line-height: 1.6em; border: 1px solid #C9CCD3; background-color: #C5C5C5; background: linear-gradient(to top, #cacaca, #e7e7e7); overflow-x: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 10px; border-radius: 3px; }
2255.sr-unredeemed .sr-unredeemed-button:hover { border: 1px solid #b7bac0; background-color: #fafcff; color: #555961; }
2256.sr-unredeemed .sr-unredeemed-button .sr-unredeemed-button-steam-icon { margin-right: 8px; font-size: 19px; }
2257.sr-unredeemed .sr-unredeemed-button .sr-unredeemed-button-gift-icon { font-size: 19px; margin-right: 7px; margin-top: 2px; }
2258.sr-unredeemed .sr-unredeemed-button .sr-unredeemed-button-gift-text { margin-top: 3px; }
2259.sr-unredeemed .sr-unredeemed-button.sr-inactive { background-color: #F3F3F3; background: linear-gradient(to top, #E8E8E8, #F6F6F6); }
2260.sr-unredeemed .sr-unredeemed-button.sr-inactive > * { opacity: .37; }
2261
2262.sr-redeemed { width: 100%; }
2263.sr-redeemed .sr-redeemed-bubble { position: relative; cursor: pointer; margin: 5px 0; text-align: center; line-height: 1.6em; font-weight: bold; background: #E9EEE4; color: #7A981C; border: 1px solid #7A981C; text-overflow: ellipsis; white-space: nowrap; padding: 10px; border-radius: 3px; }
2264.sr-redeemed .sr-redeemed-bubble .keyfield-text { display: inline-block; }
2265.sr-redeemed .sr-redeemed-bubble:hover { background: #eef3e9; color: #7A981C; border-color: #8fae1d; }
2266.sr-redeemed .sr-redeemed-bubble .steam-redeem-button { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; text-decoration: none; position: absolute; margin: auto; border-radius: 3px; right: 3%; top: 0; bottom: 0; height: 30px; width: 60px; background: #97B147; }
2267.sr-redeemed .sr-redeemed-bubble .steam-redeem-button:hover { background: #adcc52; }
2268.sr-redeemed .sr-redeemed-bubble .steam-redeem-button:hover .tooltiptext { visibility: visible; }
2269.sr-redeemed .sr-redeemed-bubble .steam-redeem-button .tooltiptext { visibility: hidden; width: 120px; font-size: 1em; background-color: black; color: #fff; text-align: center; border-radius: 6px; padding: 5px 0; position: absolute; z-index: 1; bottom: 150%; left: 50%; margin-left: -60px; text-shadow: none; }
2270.sr-redeemed .sr-redeemed-bubble .steam-redeem-button .tooltiptext::after { content: ""; position: absolute; top: 100%; left: 50%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: black transparent transparent transparent; }
2271.sr-redeemed .sr-redeemed-bubble .steam-redeem-button .steam-redeem-text { color: white; font-size: 12px; width: 100%; border-radius: 3px; text-shadow: none; }
2272.sr-redeemed .sr-gift-redeemed-bubble { font-weight: bold; background: #e5f5fc; color: #1280b7; border-color: #1280b7; }
2273.sr-redeemed .sr-gift-redeemed-bubble:hover { color: #1280b7; background: #eaf7fd; border-color: #17a1e5; }
2274
2275.sr-gift-instructions { display: flex; justify-content: center; margin: 0 auto; font-size: 1.2em; }
2276
2277a#sr-gift-instruction-link { margin-left: 2px; color: #1280b7; }
2278
2279.redeem-instructions { font-size: 14px; font-weight: normal; text-align: center; }
2280
2281.recommend-this-game { font-size: 14px; font-weight: normal; padding: 6px 0 10px; text-align: center; }
2282.recommend-this-game .sr-redeem-button { border: 1px solid transparent; border-radius: 15px; color: white !important; cursor: pointer; display: inline-block; font-size: 12px; padding: 4px 10px; text-decoration: none; }
2283.recommend-this-game .sr-redeem-button.yes-button { background-color: darkgreen; }
2284.recommend-this-game .sr-redeem-button.no-button { background-color: red; }
2285.recommend-this-game .tooltip-right:after { border: 1px solid rgba(40, 44, 52, 0.25); box-shadow: none; }
2286
2287.game-recommended { display: none; font-size: 14px; font-weight: normal; padding-top: 6px; text-align: center; }
2288
2289.sr-footer { text-align: center; font-weight: normal; border-top: 1px solid #D3D3D3; padding-top: 7px; }
2290.sr-footer > * { margin: 10px 0; }
2291.sr-footer .sr-footer-button { color: white !important; }
2292.sr-footer .sr-footer-partial-gift-cta { margin-bottom: 28px; }
2293.sr-footer .sr-footer-partial-gift-cta p { margin: 10px 0; }
2294
2295.sr-warning-modal { box-shadow: none; border-radius: 3px; text-decoration: none; background: #f5f5f5; width: 360px; }
2296.sr-warning-modal .sr-warning-modal-content { margin: 4px 0 5px 0; font-family: 'Helvetica Nueue', Helvetica, Arial, sans-serif; }
2297.sr-warning-modal .sr-warning-modal-content .sr-warning-modal-title { margin-bottom: 30px; }
2298.sr-warning-modal .sr-warning-modal-content .sr-warning-modal-content-text { color: #666; padding-bottom: 12px; margin: 0; font-size: 14px; font-weight: 300; }
2299.sr-warning-modal .sr-warning-modal-region-list { color: black; text-align: center; margin: auto 15%; padding: 10px 0px; list-style: none; max-height: 300px; column-count: 3; column-gap: 10px; overflow-y: auto; }
2300.sr-warning-modal .sr-warning-modal-region-list li { max-width: 100px; }
2301.sr-warning-modal .sr-warning-modal-buttons { margin-bottom: 3px; }
2302
2303.sr-warning-modal-buttons { text-align: end; font-weight: bold; }
2304.sr-warning-modal-buttons .sr-warning-modal-button { text-shadow: none; border-radius: 3px; background: #D5D9E1; border: 1px solid #BBC0C9; cursor: pointer; padding: 10px 10px; margin-top: 10px; background: none; box-shadow: none; }
2305.sr-warning-modal-buttons .sr-warning-modal-button:hover { background: #dfe4ec; }
2306.sr-warning-modal-buttons .sr-warning-modal-confirm-button { background: #ceecfa; color: #1280b7; border-color: #1280b7; }
2307.sr-warning-modal-buttons .sr-warning-modal-confirm-button:hover { background: #a0d9f5; }
2308</style>
2309
2310 <script>
2311
2312 window.app = window.app || {};
2313 window.pageData = {atTime: 1506712580 };
2314 window.models = window.models || {};
2315
2316window.models.product_json = {"disclaimer_text": null, "machine_name": "wiley_bookbundle", "monetary_content_event_data": [{"amount": 0.01, "type": "price"}, {"amount": 1.0, "warning_locked": "Warning: You must pay at least $1.00 for content!", "type": "price"}, {"amount": 8.0, "warning_locked": "Warning: You will not receive the $8 content! Add just \u003c%\u003d money_difference %\u003e more to unlock!", "type": "price"}, {"amount": 15.0, "warning_locked": "Warning: You will not receive the $15 content! Add just \u003c%\u003d money_difference %\u003e more to unlock!", "type": "price"}], "expand_default_split": false, "tpkd_cutoff_amount": 1.0, "bundle_display_vars": {"active_content_events": ["lessthan1", "initial", "bt8", "bt15"], "over": true, "cleanavg": "14.62", "pricing_tiers": {"initial": 1.0, "bt15": 15.0, "bt8": 8.0, "lessthan1": 0.01}}, "split_disclaimer": null, "expand_subsplits": false, "giving_fund": "ppgf", "stats_template": "Default", "order_form_vars": {"country_code": "DE", "splitsjson": "[{\"class\": \"wiley\", \"partner_split\": 0.59999999999999998, \"sibling_split\": 0.65000000000000002, \"name\": \"Wiley\"}, {\"name\": \"Charity\", \"partner_split\": 0.10000000000000001, \"sibling_split\": 0.14999999999999999, \"subsplit\": [{\"class\": \"paypalgivingfund\", \"secondary_id\": \"8443\", \"sibling_split\": 1.0, \"name\": \"Electronic Frontier Foundation\"}, {\"class\": \"paypalgivingfund\", \"secondary_id\": \"cyoc\", \"sibling_split\": 0.0, \"name\": \"Choose your own charity\"}], \"class\": \"charity\"}, {\"class\": \"humblebundle\", \"partner_split\": 0.14999999999999999, \"sibling_split\": 0.20000000000000001, \"name\": \"Humble Tip\"}]", "avguuid": "sIW3Jqtr1cyalYNO", "stripe_pubkey": "pk_live_Z77z5cJvv0rUOE1ayBDe1xHq", "is_order_adder": false, "min_leaderboard": 150.0, "avg": "14.62383152612060625604643663", "avghash": "1kacdfRuuLSnGywPTrJbdYBGCPFAvo4mmAlaPLMS8WI\u003d"}, "default_dollar_price": 25, "human_name": "Humble Book Bundle: Cybersecurity presented by Wiley", "disallowed_payment_processors": ["coinbase"], "has_nonsteam_keys": false, "splits": [{"class": "wiley", "partner_split": 0.59999999999999998, "sibling_split": 0.65000000000000002, "name": "Wiley"}, {"name": "Charity", "partner_split": 0.10000000000000001, "sibling_split": 0.14999999999999999, "subsplit": [{"class": "paypalgivingfund", "secondary_id": "8443", "sibling_split": 1.0, "name": "Electronic Frontier Foundation"}, {"class": "paypalgivingfund", "secondary_id": "cyoc", "sibling_split": 0.0, "name": "Choose your own charity"}], "class": "charity"}, {"class": "humblebundle", "partner_split": 0.14999999999999999, "sibling_split": 0.20000000000000001, "name": "Humble Tip"}], "has_steam_keys": false, "product_title": "the Humble Book Bundle: Cybersecurity presented by Wiley", "category": "bundle", "pretty_path": "/books/cybersecurity-wiley", "has_any_keys": false, "end": "2017-07-31T18:00:00", "auth_required_for_purchase_if_free": false, "slider_replacement_text": "All for one and one for all!", "start": "2017-07-17T18:00:00", "has_free_content": false, "eula": null, "has_free_keys": false, "media_type": "ebook", "cutoff_warning_override": null};
2317window.models.keyentity_json = {"avghash": "8c8LjokekjmElEWsW9fKJAM+xeJ17XBUJ3hS6PsB9ro\u003d", "gamekey": "wWuG2hMxeynmcRrC", "forced_content_events": [], "avg": "15.08300903735141792927419235", "avguuid": "3RgOIIZiFquPvoUt", "cleanfamilytotal": "15.00"};
2318
2319window.models.user_json = {
2320 email: "jonasmarioschaefer@gmail.com",
2321 payment_credentials: [],
2322 has_monthly_perks: false,
2323 has_steam_link: true
2324};
2325
2326window.models.request = {
2327 country_code: "DE",
2328 humble_guard_enabled: true,
2329};
2330 </script>
2331 <script id="main-js" data-dist_version="4940bbeb11c91fc1421e1df41f1de2c10e9f7b06" src='https://humblebundle-a.akamaihd.net/4940bbeb11c91fc1421e1df41f1de2c10e9f7b06/dist/main.min.js'></script>
2332 <script>
2333 (function ($, Backbone) {
2334 'use strict';
2335
2336 var Stats = Backbone.Model.extend({
2337 defaults: {
2338 'stats_data': {},
2339 'total_contributions': '0',
2340 'total_contributed': '$0.00',
2341 'average_contribution': '$0.00',
2342 'average_mac': '$0.00',
2343 'average_windows': '$0.00',
2344 'average_linux': '$0.00',
2345 'average_android': '$0.00',
2346 'percent_mac': '',
2347 'percent_windows': '',
2348 'percent_linux': '',
2349 },
2350 initialize: function() {
2351 _.bindAll(this, 'recalculate');
2352 this.bind('change', this.recalculate, this);
2353 this.recalculate();
2354 },
2355 recalculate: function() {
2356 var calculated_values = {};
2357 var stats_data = this.get('stats_data');
2358
2359 if (!stats_data || !stats_data.rawplatformtotals || !stats_data.numberofcontributions) {
2360 return;
2361 }
2362
2363 var total = new Big(stats_data['rawtotal']);
2364 var macRawTotal = new Big(stats_data.rawplatformtotals.mac);
2365 var windowsRawTotal = new Big(stats_data.rawplatformtotals.windows);
2366 var linuxRawTotal = new Big(stats_data.rawplatformtotals.linux);
2367 var androidRawTotal = new Big(stats_data.rawplatformtotals.android);
2368
2369 var totalContribution = parseInt(stats_data.numberofcontributions.total);
2370 var macTotalContribution = parseInt(stats_data.numberofcontributions.mac);
2371 var windowsTotalContribution = parseInt(stats_data.numberofcontributions.windows);
2372 var linuxTotalContribution = parseInt(stats_data.numberofcontributions.linux);
2373 var androidTotalContribution = parseInt(stats_data.numberofcontributions.android);
2374
2375 var platform_total = macRawTotal.add(windowsRawTotal).add(linuxRawTotal);
2376
2377 // Totals
2378 calculated_values['total_contributions'] = numberWithCommas(totalContribution);
2379 calculated_values['total_contributed'] = moneyfmt(total);
2380
2381 // Averages
2382 calculated_values['average_contribution'] = moneyfmt(total.div(totalContribution || 1));
2383 calculated_values['average_mac'] = moneyfmt(macRawTotal.div(macTotalContribution || 1));
2384 calculated_values['average_windows'] = moneyfmt(windowsRawTotal.div(windowsTotalContribution || 1));
2385 calculated_values['average_linux'] = moneyfmt(linuxRawTotal.div(linuxTotalContribution || 1));
2386 calculated_values['average_android'] = moneyfmt(androidRawTotal.div(androidTotalContribution || 1));
2387
2388 // Percentages
2389 calculated_values['percent_mac'] = parseFloat(macRawTotal.div(platform_total).toFixed(2));
2390 calculated_values['percent_windows'] = parseFloat(windowsRawTotal.div(platform_total).toFixed(2));
2391 calculated_values['percent_linux'] = parseFloat(linuxRawTotal.div(platform_total).toFixed(2));
2392
2393 this.set(calculated_values, { silent: true });
2394 }
2395 });
2396
2397 window.StatsView = Backbone.View.extend({
2398 events: {
2399 'mouseenter .piechart': 'show_grayscale_chart',
2400 'mouseleave .piechart': 'show_color_chart'
2401 },
2402 initialize: function (options) {
2403 this.options = options;
2404 this.model = new Stats({
2405 'stats_data': this.options['initial_stats_data'],
2406 'leaderboard_data': this.options['leaderboard_data']
2407 });
2408
2409 _.bindAll(this,
2410 'render',
2411 'show_grayscale_chart',
2412 'show_color_chart'
2413 );
2414
2415 if (!this.$el.length) {
2416 throw new Error('$el is required');
2417 }
2418
2419 // render the html
2420 var raw_template = this.options['template'];
2421 var tmpl = _.template(raw_template);
2422 var template_json = this.model.toJSON();
2423 this.$el.html(tmpl(template_json));
2424
2425 // populate values for the first column
2426 this.render();
2427
2428 // initialize pie chart
2429 this.show_color_chart();
2430
2431 // linkify leaderboard
2432 this.$('.contributor-name').each(function() { twitter_linkify($(this)); });
2433
2434 // automatically re-render when the model changes
2435 this.model.on('change', this.render);
2436 },
2437 render: function() {
2438 /*
2439 * Update the values in the first column (totals / averages). The pie
2440 * chart and leaderboard do not live update.
2441 *
2442 * Note: The HTML elements where they are displayed have classes matching
2443 * the corresponding fields on the model. This code relys on that.
2444 */
2445 var model_json = this.model.toJSON();
2446 for (var key in model_json) {
2447 var $field = this.$('.' + key);
2448 if ($field.length == 1) {
2449 if ((key != 'average_contribution') || this.options['live_update_average'] || ($field.text() === '')) {
2450 $field.text(model_json[key]);
2451 }
2452 }
2453 }
2454 },
2455 show_grayscale_chart: function () {
2456 var $piechart = this.$('.piechart');
2457 $piechart.attr('src', $piechart.data('grayscaleSrc'));
2458 this.$('.chartlegend .chartcolor').each(function() {
2459 $(this).css('background-color', $(this).data('grayscaleColor'));
2460 });
2461 },
2462 show_color_chart: function () {
2463 var $piechart = this.$('.piechart');
2464 $piechart.attr('src', $piechart.data('colorSrc'));
2465 this.$('.chartlegend .chartcolor').each(function() {
2466 $(this).css('background-color', $(this).data('color'));
2467 });
2468 }
2469 });
2470})(jQuery, Backbone); // END CLOSURE
2471
2472 (function () {
2473 $(function() {
2474
2475var sales_counter = function(machine_name, products_sold, statsView, element_query) {
2476 // set up the animated counter
2477 var animatedCounter = null;
2478 var $counterElement = $(element_query);
2479 if ($counterElement.length) {
2480
2481 var numDigits = 6;
2482
2483 animatedCounter = $counterElement.animatedCounter({'numDigits': numDigits}).data('animatedCounter');
2484 }
2485
2486 var lastStatsTimestamp = 0;
2487
2488 // subscribe to pubnub notifications which will be used to update the stats and counter if we are not on a receipt page
2489 pubnub_client.subscribe({
2490 'channel': 'humble'+machine_name,
2491 'callback': function(message) {
2492 if (!message.stats) {
2493 return;
2494 }
2495 var counterValue = parseInt(message.stats.numberofcontributions.total);
2496 // ignore outdated messages
2497 if (message.timestamp <= lastStatsTimestamp) {
2498 return;
2499 }
2500 lastStatsTimestamp = message.timestamp;
2501 // update the animated counter with the new data
2502 if (animatedCounter) {
2503 animatedCounter.setValue(counterValue);
2504 }
2505 // update the stats box with the new data
2506 if (statsView) {
2507 statsView.model.set({'stats_data': message.stats});
2508 }
2509 }
2510 });
2511}
2512
2513 'use strict';
2514 // set up the backbone stats controller
2515 var statsView = null;
2516 var $stats_holder = $('#stats-holder');
2517 var $stats_template = $('#stats-template');
2518
2519 var $leaderboard = $('#leaderboard-data');
2520 var leaderboard_html = $leaderboard.length ? $leaderboard.html().trim() : '';
2521 var leaderboard_data = leaderboard_html ? JSON.parse(leaderboard_html) : [];
2522
2523 if (typeof StatsView != 'undefined' && $stats_holder.length && $stats_template.length) {
2524 statsView = new StatsView({
2525 'initial_stats_data': {"rawtotal": 1451152.05, "sales_bt8": 89598, "numberofcontributions": {"windows": 55151, "ios": 5933, "mac": 16050, "linux": 12622, "android": 9476, "total": 99232.0}, "sales_btX": 1, "sales_lessthan1": 47, "sales_bt15": 83373, "sales_initial": 99185, "rawplatformtotals": {"windows": 788500.16000000003, "mac": 252149.51000000001, "ios": 86498.960000000006, "android": 126372.23, "linux": 197631.19}},
2526 'leaderboard_data': leaderboard_data,
2527 'live_update_average': true,
2528 'el': $stats_holder,
2529 'template': $stats_template.html()
2530 });
2531 }
2532
2533 // Set up the sales counter
2534 sales_counter('wiley_bookbundle', 0, statsView, '#heading-bundles-sold .digit-holder, #heading-bundles-sold .mini-digit-holder');
2535 })
2536})();
2537
2538 // keypage.js
2539
2540
2541images = [];
2542var uplay_link = '';
2543var get_uplay_ticket = null;
2544
2545function npreload(items) {
2546 for (var i=0; i<items.length; i++) {
2547 var nimg = new Image();
2548 nimg.src = items[i];
2549 images.push(nimg);
2550 }
2551}
2552
2553
2554
2555/*
2556 * Format 5 as 05 (e.g.)
2557 */
2558function zeropad(num) {
2559 num += '';
2560 if (num.length == 1) {
2561 num = '0' + num;
2562 }
2563 return num;
2564}
2565
2566/*
2567 * Get steam profile data for a given user and call the provided callbacks. On sucess it will cache the steam profile data.
2568 * steam_id: the steam id of the profile to retrieve, null for currently logged in user
2569 * options['success']
2570 * options['error']
2571 * options['complete']: functions to call for the respective callbacks, will be a no-op if not provided
2572 * options['context']: the context to call the callbacks with, window by default
2573 * returns an object containing steam_name and avatar_url
2574 */
2575window.steam_profiles = {};
2576function get_steam_profile(steam_id, options) {
2577 options = options || {};
2578 options['context'] = options['context'] || window;
2579 $.each(['success', 'error', 'complete'], function(index, callback_name) {
2580 options[callback_name] = options[callback_name] || $.noop;
2581 });
2582
2583 if (window.steam_profiles[steam_id]) {
2584 options['success'].call(options['context'], window.steam_profiles[steam_id]);
2585 return;
2586 }
2587
2588 $.ajax({
2589 url: '/user/steam_profile',
2590 dataType: 'json',
2591 data: {steam_id: steam_id},
2592 success: function(profile_data) {
2593 window.steam_profiles[steam_id] = profile_data;
2594 options['success'].apply(options['context'], arguments);
2595 },
2596 error: function() {
2597 options['error'].apply(options['context'], arguments);
2598 },
2599 complete: function() {
2600 options['complete'].apply(options['context'], arguments);
2601 },
2602 });
2603}
2604
2605/*
2606 * Format and display the dates that new builds were posted, in the user's local
2607 * timezone. Detect if there are new builds since the user visited the download
2608 * page, and highlight them.
2609 */
2610require(['account/accountModals'], function (AccountModals) {
2611 $(function() {
2612 var HumbleGuardModal = AccountModals.AccountHumbleGuardModal;
2613
2614
2615 var newbuilds = {'Mac': 0, 'Windows': 0, 'Linux': 0};
2616
2617 // Display a string at the top of the download list for each platform informing
2618 // the user of how many new builds there are since their last visit.
2619 for (pretty_platform in newbuilds) {
2620 if (!newbuilds.hasOwnProperty(pretty_platform) || newbuilds[pretty_platform] == 0) continue;
2621 var platform = pretty_platform.toLowerCase();
2622 var plural = '';
2623 if (newbuilds[pretty_platform] > 1) {
2624 plural = 's';
2625 }
2626 var builds_string = newbuilds[pretty_platform] + ' updated ' + pretty_platform + ' build' + plural + ' posted since your last visit!';
2627 $('.newbuilds.' + platform).html('<div>' + builds_string + '</div>');
2628 }
2629
2630 $('#keystation,.key-expander').click(function(e) {
2631 var t = $(this);
2632 if (t.hasClass('kexpanded')) return;
2633 t.addClass('kexpanded');
2634 e.preventDefault();
2635 t.find('.expandkeys').animate({height:0,opacity:0});
2636 t.find('.shrinkwrapper').animate({height:t.find('.shrinksizer').height() + 6}, function() {$(this).height('auto');});
2637 });
2638
2639
2640
2641 $(document).ready(function() {
2642 $('.auto-expand-redeemer').trigger('click');
2643 });
2644
2645 $('.keystation-new').click(function(e){
2646 var parentbox = $(this).closest('.whitebox');
2647 e.preventDefault();
2648 parentbox.find('.keystation-new').animate({height:0,opacity:0});
2649 if (parentbox.find('.keytabs').length > 0) {
2650 parentbox.closest('.whitebox').animate({'margin-top':'40px'});
2651 }
2652 parentbox.find('.shrinksizer-new').css({'overflow':'visible'});
2653 parentbox.find('.keytabs').css({'opacity':0});
2654 parentbox.find('.keytabs').animate({'opacity':1.0},1000);
2655 parentbox.find('.shrinksizer-new').animate({height:'toggle'});
2656 parentbox.find('.keystation-new').remove();
2657 });
2658
2659
2660
2661
2662
2663 $('.keyfield').click(function(e) {
2664 // When clicking an already redeemed key, select the entire string.
2665 var $holder = $(this).parent();
2666 if ($holder.hasClass('activated')) {
2667 e.preventDefault();
2668 selectText(this);
2669 }
2670 });
2671
2672 $('.keyredeemer, .giftbutton').click(function(e) {
2673 e.preventDefault();
2674 var $that = $(this);
2675 var $holder = $that.parent();
2676 if ($that.data('enabled') === true) {
2677 return;
2678 }
2679 $that.data('enabled', true);
2680
2681 function fetchkey() {
2682 var keytype = $holder.data('keytype');
2683 var keyindex = $holder.data('keyindex');
2684 var helpertext = $holder.data('helpertext') || '';
2685 var uplay_user_ticket = '';
2686 if (get_uplay_ticket) {
2687 uplay_user_ticket = get_uplay_ticket();
2688 }
2689
2690
2691 $holder.addClass('pending').find('.keyfield-content').html('<img class="indicator" src="https://humblebundle-a.akamaihd.net/static/hashed/e73d51c16b07d083026843ceda9c22056b9d04a2.gif" /> Retrieving key...');
2692 var retry = 5;
2693
2694 function redeemerror(data) {
2695 if (!data) {
2696 data = {};
2697 }
2698
2699 retry--;
2700 if (retry <= 0 || data.fatal_error) {
2701 var error_msg = data.error == 'Already Purchased' ? 'Your Steam account already owns this game' :
2702 data.error == 'Duplicate activation code' ? 'This key has been activated already' :
2703 data.error == 'Does not own required app' ? 'You need to purchase the base product first' :
2704 data.error == 'Restricted country' ? 'This product not available in your country' :
2705 data.error == 'Bad activation code' ? 'Steam errored, please refresh page and try again' :
2706 data.error == 'Humble Guard Required' ? 'Humble Account Security check required.' :
2707 data.error == 'Too many bad activation code attempts in period' ? 'Too many Steam keys redeemed. Try again later.' :
2708 data.error_msg ? data.error_msg : 'Please try redeeming again later';
2709
2710 $holder.find('.keyfield-content').text(error_msg);
2711 if (data.error_msg && (data.error_msg.toLowerCase().indexOf('sold out') != -1)) {
2712 $holder.find('.keyredeemer').addClass('soldout');
2713 $holder.find('.giftbutton').hide();
2714 }
2715
2716 } else {
2717 setTimeout(grabKey, 3500);
2718 }
2719 }
2720
2721 function humbleGuardHandler(jqXHR) {
2722 var data;
2723 try {
2724 data = $.parseJSON(jqXHR.responseText);
2725 } catch (e) {
2726 // probably a 500, let the standard error handler take it instead
2727 return;
2728 }
2729 if (data.humble_guard_required) {
2730 jqXHR.fatal_error = true;
2731 jqXHR.error = "Humble Guard Required";
2732 $holder.removeClass('activated');
2733 var modal = new HumbleGuardModal({
2734 onSuccess: function (view) {
2735 fetchkey();
2736 view.close();
2737 }
2738 });
2739 $('#site-modal').html(modal.render().el);
2740 }
2741 }
2742
2743 function grabKey() {
2744 $.post(
2745 '/humbler/redeemkey',
2746 {
2747 keytype: keytype,
2748 key: 'wWuG2hMxeynmcRrC',
2749 keyindex: keyindex,
2750 uplay_ticket: uplay_user_ticket,
2751 gift: $that.hasClass('giftbutton')
2752 },
2753 function (data) {
2754 if (data && data.success) {
2755 $holder.removeClass('pending');
2756 $holder.addClass('activated');
2757 if (data.steam_id) {
2758 var link_text = 'this account';
2759 if (data.steam_name) {
2760 link_text = _.escape(data.steam_name);
2761 }
2762
2763 $holder.find('.keyfield-content').html('redeemed to <a href="http://steamcommunity.com/profiles/' + data.steam_id + '" target="_blank">' + link_text + '</a>');
2764 $holder.find('.giftbutton').hide();
2765
2766 _gaTrackEvent('Download page', 'Redeemed Steam key', keytype);
2767
2768 } else if (data.giftkey) {
2769 $holder.addClass('is-gift');
2770 $holder.find('.keyfield-content').html('https://humblebundle.com/gift?key=' + data.giftkey);
2771 $holder.find('.giftbutton').hide();
2772 } else {
2773 var $keyfield = $holder.find('.keyfield-content');
2774 $keyfield.html(helpertext + data.key); // data.key has already been escaped by the backend
2775 selectText($keyfield[0]); // Highlight text so it can easily be copied to clipboard
2776 }
2777
2778 } else if (data.access_token_missing) {
2779 $holder.find('.keyfield-content').html('<a href="/steam/link" target="_blank">Connect to Steam</a> to redeem!');
2780
2781 } else if (data.bad_access_token) {
2782 $holder.find('.keyfield-content').html('Steam access expired. <a href="/steam/link" target="_blank">Reconnect to Steam</a> to redeem!');
2783
2784 } else if (data.uplay_ticket_missing) {
2785 $holder.find('.keyfield-content').html('<a href="'+ uplay_link + '" target="_blank">Connect to uPlay</a> to redeem!');
2786
2787 } else {
2788 redeemerror(data);
2789 }
2790 },
2791 'json'
2792 ).fail(humbleGuardHandler)
2793 .fail(redeemerror)
2794 .always(function() {
2795 $that.data('enabled', false);
2796 });
2797 }
2798 grabKey();
2799 }
2800
2801 fetchkey();
2802 });
2803
2804 // redeem all button (origin_bundle only)
2805 $('.origin_bundle_redeem_all_button').click(function(e) {
2806 e.preventDefault();
2807 var keytype = $(this).data('keytype');
2808 // click all unactivated redeem key buttons that match the provided selector
2809 $(".redeemholder").each(
2810 function (index, elem) {
2811 if ($(elem).hasClass("activated")) {
2812 return;
2813 }
2814 // check for the type of button we are looking for
2815 var button = $(elem).find("." + keytype + "button").get(0);
2816 if (button) {
2817 $(button).click();
2818 }
2819 }
2820 );
2821 });
2822
2823 });
2824});
2825
2826// preload the images for the redeemed state of the 3rd party key redeemers
2827npreload([
2828 'https://humblebundle-a.akamaihd.net/static/hashed/8c812b14676720a1c5541e5ff0084336f8ca952b.png',
2829 'https://humblebundle-a.akamaihd.net/static/hashed/72c7a91a612ceee5ceda77133c9d79bf66b8dec3.png',
2830 'https://humblebundle-a.akamaihd.net/static/hashed/7d32b8cb2ed51ab18ec0e5a40208afd4a41c988c.png',
2831 'https://humblebundle-a.akamaihd.net/static/hashed/7f9102778b07eec38f1ba5911c95c24d3aa98318.png',
2832 'https://humblebundle-a.akamaihd.net/static/hashed/20048fabc7a0a68316b0315f584c58ad95b17055.png',
2833 'https://humblebundle-a.akamaihd.net/static/hashed/e73d51c16b07d083026843ceda9c22056b9d04a2.gif'
2834 ]);
2835
2836$(document).ready(function() {
2837 $('.keytabs li').click(function(e) {
2838 var parentbox = $(this).closest('.whitebox');
2839 e.preventDefault();
2840
2841 parentbox.find('.keytab').css({'visibility':'hidden'}).hide(200);
2842 parentbox.find('.keytabs li.activekeytab').removeClass('activekeytab');
2843 $(this).addClass('activekeytab');
2844 var tgtSelector = $(this).find('a').attr('href');
2845 parentbox.find(tgtSelector).show(200,function(){ $(this).css({'visibility':'visible'});})
2846 });
2847});
2848
2849
2850$(document).ready(function() {
2851 $('#deletekeypage').click(function(e) {
2852 e.preventDefault();
2853 $('#deletekeyconfirm').fadeIn();
2854 });
2855 $('#dkcancel').click(function(e) {
2856 e.preventDefault();
2857 $('#deletekeyconfirm').fadeOut();
2858 });
2859
2860
2861 $('#dkconfirm').click(function(e) {
2862 e.preventDefault();
2863 var url = '/delete-key';
2864 $.post(url, {'key': 'wWuG2hMxeynmcRrC'}, function(data) {
2865 var dict = JSON.parse(strip_json_prefix(data));
2866 var result = '';
2867 if (dict.hasOwnProperty('result')) {
2868 result = dict['result'];
2869 } else {
2870 result = 'Sorry, a problem occurred.';
2871 }
2872 $('#deletekeyconfirm').html('<p class=\'centered-text\'>' + result + '</p>');
2873 }, 'text');
2874 });
2875
2876 require(['downloadPages/uplay'], function(uplay) {
2877 uplay_link = uplay.getConnectLink();
2878 uplay.init($('.uplay-login-status'));
2879 get_uplay_ticket = uplay.getTicket;
2880 });
2881
2882});
2883
2884
2885
2886$(document).ready(function() {
2887 $('.steam-profile .js-unlink-submit').on('click', function(e) {
2888 e.preventDefault();
2889 e.stopPropagation();
2890 $(e.currentTarget).closest('form').submit();
2891 });
2892
2893 // fetch and update steam info for the currently logged in user
2894 var $steam_profile = $('.steam-profile');
2895 if ($steam_profile.length) {
2896 var $spinner = $('<div class=\'indicator\'></div>');
2897 $steam_profile.children().hide();
2898 $steam_profile.append($spinner);
2899
2900 // get steam profile for current user
2901 get_steam_profile(null, {
2902 context: this,
2903 success: function(profile_data) {
2904 $steam_profile.children().show();
2905 if (profile_data['steam_name'] && profile_data['avatar_url']) {
2906 $steam_profile.find('.account-text a:first').text(profile_data['steam_name']);
2907 $steam_profile.find('.profile-pic').css('background-image', 'url(' + profile_data['avatar_url'] + ')');
2908 } else {
2909 $steam_profile.find('.profile-pic').hide();
2910 }
2911 },
2912 error: function(profile_data) {
2913 $steam_profile.children().show();
2914 $steam_profile.find('.profile-pic').hide();
2915 },
2916 complete: function(profile_data) {
2917 $spinner.remove();
2918 },
2919 });
2920 }
2921
2922 // fetch steam profile data for already redeemed keys
2923 // get unique steam ids
2924 var steam_ids = {};
2925 $('.keyfield-content a[data-steam-id]').each(function(index, el) {
2926 steam_ids[$(el).data('steamId')] = true;
2927 });
2928
2929 // fetch unique keys and update the redeem text
2930 var self = this;
2931 $.each(steam_ids, function(key, value) {
2932
2933 var $spinner = $('<img class="indicator" src="https://humblebundle-a.akamaihd.net/static/hashed/e73d51c16b07d083026843ceda9c22056b9d04a2.gif" />');
2934 var $steam_profile_links = $('.keyfield-content a[data-steam-id=' + key + ']');
2935 var original_text = $steam_profile_links.first().text();
2936 $steam_profile_links.html($spinner);
2937
2938 get_steam_profile(key, {
2939 context: self,
2940 success: function(profile_data) {
2941 var link_text = profile_data['steam_name'] || original_text;
2942 $steam_profile_links.text(link_text);
2943 },
2944 error: function(profile_data) {
2945 $steam_profile_links.text(original_text);
2946 },
2947 });
2948 });
2949});
2950
2951// arch_toggle.js
2952$(document).ready(function() {
2953 $('.arc-toggle input').change(function() {
2954 var arc = $(this).val() == '64';
2955 $(this).closest('.row').toggleClass('arc64',arc);
2956 });
2957});
2958</script>
2959<script type="application/ld+json">
2960 {
2961 "@context": "http://schema.org",
2962 "@type": "WebSite",
2963 "url": "https://www.humblebundle.com/",
2964 "potentialAction": {
2965 "@type": "SearchAction",
2966 "target": "https://www.humblebundle.com/store/search?search={search_term}",
2967 "query-input": "required name=search_term"
2968 }
2969 }
2970</script>
2971
2972</head>
2973
2974<body>
2975 <div class="page-wrap">
2976
2977
2978
2979
2980
2981
2982
2983 <div class="navigation-container">
2984
2985
2986<nav class="navbar">
2987 <ul class="navbar-items-left">
2988
2989 <li class="navbar-item-header">
2990 <a href="/">
2991 <i class="navbar-item-header-icon hb hb-bundle"></i>
2992 </a>
2993 </li>
2994 <script type='text/template' id='site-search-list-product'>
2995 <div data-product='<%- machine_name %>' class='site-search-list-product product-<%- machine_name %>'>
2996 <% var classes = 'product-details-link'; %>
2997 <% if (on_sale) { %>
2998 <% classes += ' product-' + sale_type + '-sale'; %>
2999 <% } %>
3000 <% if (type === 'bundle' || type === 'monthly') { %>
3001 <a href='<%- bundle_path %>?hmb_source=search_bar' class='<%- classes %>'>
3002 <% } else { %>
3003 <a href='/store<%- link %>?hmb_source=search_bar' class='<%- classes %>'>
3004 <% } %>
3005 <div class='scrollable-wrapper' title='<%- human_name %>'>
3006 <img class='product-image' src='<%- storefront_icon %>' alt=''/>
3007 <div class='product-list-wrapper'>
3008 <div class='wishlist-holder'></div>
3009 <div class='buy-button'>
3010 <div class='action-button'>
3011 <% var button_classes = ''; %>
3012 <% var button_text = ''; %>
3013 <% if (on_sale) { %>
3014 <% var percent_off = Math.round(100.0 * ((full_price[0] - current_price[0]) / full_price[0])); %>
3015 <% } %>
3016
3017 <% var text_class = 'text'; %>
3018 <% if (!can_be_purchased || type === 'bundle') { %>
3019 <% button_text = 'View'; %>
3020 <% } else { %>
3021
3022 <% if (type != 'bundle' && display_as_free) { %>
3023 <% button_text = 'Free'; %>
3024 <% button_classes += ' on-sale'; %>
3025 <% } else { %>
3026 <% button_text = button_text || moneyfmt(current_price[0], current_price[1], false, current_country !== 'US') %>
3027 <% text_class += ' store-price'; %>
3028 <% } %>
3029 <% if (on_sale && !display_as_free) { %>
3030 <span class='discount'>-<%= percent_off %>%</span>
3031 <% button_classes += ' on-sale'; %>
3032 <% } %>
3033 <% button_classes += ' js-show-product-details'; %>
3034 <% } %>
3035 <button class='store-item-button js-action-button <%= button_classes %>'>
3036 <i class='hb hb-shopping-cart'></i>
3037 <span class='<%- text_class %>'>
3038 <%= button_text %>
3039 </span>
3040 <span class='view-text'>View</span>
3041 </button>
3042 </div>
3043 </div>
3044 <div class='product-title-and-description'>
3045 <h2 class='product-title'><%- human_name %></h2>
3046 <% if (type === 'monthly') { %>
3047 <h3 class="product-description"><%- description %></h3>
3048 <% } %>
3049 </div>
3050 <div class='platforms-wrapper'>
3051
3052 <% if (cta_badge && cta_badge != 'n/a') { %>
3053 <%= render_platform_icons(icon_dict).trim() %><span class='cta-text <%= cta_badge %>'><%= cta_text %></span>
3054 <% } else { %>
3055 <%= render_platform_icons(icon_dict) %>
3056 <% } %>
3057 </div>
3058 </div>
3059 </div>
3060 </a>
3061 </div>
3062</script>
3063
3064<script type='text/template' id='site-search-empty-product'>
3065 <div class='site-search-list-product'>
3066 <div class='scrollable-wrapper empty-product'>
3067 <div class='product-list-wrapper'>
3068 <div class='product-title-and-description'>
3069 <span class="product-title">Sorry, we could not find what you were looking for!</span>
3070 </div>
3071 </div>
3072 </div>
3073 </div>
3074</script>
3075
3076
3077 <li class="navbar-item site-search">
3078 <span class="js-site-minisearch site-minisearch-view">
3079 <span class="js-site-searchbar-holder site-searchbar-holder">
3080 <div class="searchbar">
3081 <input class="js-site-search site-search" placeholder="Search Humble Bundle"/>
3082 <i class="js-clear-site-search hb hb-search clear-search-button"></i>
3083 </div>
3084 </span>
3085 <div class="js-site-search-results-holder site-search-results-holder">
3086 <div class="js-site-search-results site-search-results"></div>
3087 </div>
3088 </span>
3089 </li>
3090
3091
3092
3093 </ul>
3094 <ul class="navbar-items-right">
3095
3096
3097 <li class="navbar-item">
3098 <a href='https://support.humblebundle.com' target="_blank">
3099 <i class="navbar-item-icon hb hb-support"></i>
3100 <span class="navbar-item-text">Support</span>
3101 </a>
3102 </li>
3103 <li class="navbar-item">
3104 <a href='http://blog.humblebundle.com/' target="_blank">
3105 <i class="navbar-item-icon hb hb-file"></i>
3106 <span class="navbar-item-text">Blog</span>
3107 </a>
3108 </li>
3109
3110 <li class="navbar-item-dropdown navbar-user-item">
3111
3112 <a class="navbar-item-dropdown-toggle" href="#">
3113 <i class="navbar-item-icon hb hb-user"></i>
3114 <span class="display-name">
3115 <div class="display-name-container" title="jonasmarioschaefer@gmail.com">jonasmarioschaefer@gmail.com</div>
3116 </span>
3117 <i class="hb hb-caret-down"></i>
3118 </a>
3119
3120
3121 <div class="navbar-item-dropdown-container is-hidden">
3122 <div class="navbar-item-dropdown-items">
3123 <div class="navbar-item-dropdown-arrow"></div>
3124 <ul>
3125
3126 <li class="navbar-item-dropdown-item">
3127 <a href='/home/library'>
3128 <i class="navbar-item-dropdown-icon hb hb-library"></i>
3129 <span class="navbar-item-dropdown-text">Library</span>
3130 </a>
3131 </li>
3132 <li class="navbar-item-dropdown-item">
3133 <a href='/home/purchases'>
3134 <i class="navbar-item-dropdown-icon hb hb-tier"></i>
3135 <span class="navbar-item-dropdown-text">Purchases</span>
3136 </a>
3137 </li>
3138 <li class="navbar-item-dropdown-item">
3139 <a href='/home/keys'>
3140 <i class="navbar-item-dropdown-icon hb hb-key"></i>
3141 <span class="navbar-item-dropdown-text">Keys</span>
3142 </a>
3143 </li>
3144 <li class="navbar-item-dropdown-item">
3145 <a href='/home/coupons'>
3146 <i class="navbar-item-dropdown-icon hb hb-scissors"></i>
3147 <span class="navbar-item-dropdown-text">Coupons</span>
3148 </a>
3149 </li>
3150 <li class="navbar-item-dropdown-item">
3151 <a href='/store/wishlist'>
3152 <i class="navbar-item-dropdown-icon hb hb-star"></i>
3153 <span class="navbar-item-dropdown-text">Wish List</span>
3154 </a>
3155 </li>
3156
3157 <li class="navbar-item-dropdown-item">
3158 <a href='/user/wallet'>
3159 <i class="navbar-item-dropdown-icon hb hb-money"></i>
3160 <span class="navbar-item-dropdown-text">Wallet</span>
3161 </a>
3162 </li>
3163
3164 <li class="navbar-item-dropdown-item">
3165 <a href='/user/settings'>
3166 <i class="navbar-item-dropdown-icon hb hb-cog"></i>
3167 <span class="navbar-item-dropdown-text">Settings</span>
3168 </a>
3169 </li>
3170
3171
3172 <li class="navbar-item-dropdown-item">
3173 <form id="navbar-logout-form" action="/logout?goto=/downloads&qs=key%3DwWuG2hMxeynmcRrC" method="POST">
3174 <input type='hidden' class='csrftoken' name='_le_csrf_token' value='wpOLiPSCcKd_Z-T--1-1506712425' />
3175 <a href="#" onclick="document.getElementById('navbar-logout-form').submit(); return false;">
3176 <i class="navbar-item-dropdown-icon hb hb-sign-out"></i>
3177 <span class="navbar-item-dropdown-text">Logout</span>
3178 </a>
3179 </form>
3180 </li>
3181 </ul>
3182 </div>
3183 </div>
3184
3185 </li>
3186
3187
3188
3189 </ul>
3190</nav>
3191</div>
3192 <div class="base-main-wrapper">
3193
3194
3195<nav class="tabbar ">
3196 <a class="tabbar-tab
3197
3198 "
3199 href="/">Game Bundles
3200 </a><a class="tabbar-tab
3201
3202 "
3203 href="/books">Book Bundles
3204 </a><a class="tabbar-tab
3205
3206 "
3207 href="/monthly">Monthly
3208 </a><a class="tabbar-tab
3209
3210 "
3211 href="/store">Store
3212 </a>
3213</nav>
3214
3215
3216
3217
3218
3219
3220 <div id="page-top-messages"></div><div class="page_title"></div>
3221 <div class="inner-main-wrapper">
3222
3223
3224
3225
3226<div class="js-admin-edit"
3227 data-entity-kind="product"
3228
3229 data-machine-name="haikasoru_bookbundle"
3230 >
3231 </div>
3232
3233
3234
3235 <div class='humble-banner'>
3236 <a href='/books/haikasoru-books?utm_source=download_page'>
3237 <h3>
3238 <img class='banner-logo' src='https://humblebundle.imgix.net/misc/files/hashed/0b024b0ee064abd7c2351cc4b1a5019be4d52a3e.png?auto=format&lossless=1&ixlib=python-0.2.0&s=fd18927645653a22ffd6f0c680ad8039' alt='Humble Book Bundle: Haikasoru presented by VIZ Media' />
3239 <p>Also happening now:</p>
3240 </h3>
3241 <h4>Pay what you want for awesome Japanese science fiction books and support charity!</h4>
3242 </a>
3243 </div>
3244
3245
3246
3247 <div class="js-admin-edit"
3248 data-entity-kind="product"
3249
3250 data-machine-name="wiley_bookbundle"
3251 >
3252 </div>
3253
3254
3255 <div id='dlheader'>
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265 <a id='logo' href='/books/cybersecurity-wiley'><img src='https://humblebundle.imgix.net/misc/files/hashed/80b534eb691f234833835f47339eb3ddcfeee67b.png?auto=format&lossless=1&ixlib=python-0.2.0&s=99d591567fbb9ee9e84af1f371aa824d' /></a>
3266
3267 </div>
3268
3269
3270 <div id='download-page-wrapper'>
3271 <div id='main'>
3272 <div id='papers-top'></div>
3273 <div id='papers-mid'></div>
3274 <div id='papers-bottom'></div>
3275 <div id='papers-content'>
3276
3277
3278
3279 <div class='already-claimed' style="float:right;">This page is claimed by <strong>you</strong>.</div>
3280
3281 <div id='headertext'>
3282 <div id='hibtext'>
3283
3284 Thanks for purchasing the Humble Book Bundle: Cybersecurity presented by Wiley!<div class="js-admin-edit"
3285 data-entity-kind="product"
3286
3287 data-machine-name="wiley_bookbundle"
3288 >
3289 </div>
3290
3291 </div>
3292 <div id='spiel'>
3293
3294
3295
3296
3297
3298
3299 <p>
3300 Follow <a href='http://www.twitter.com/humble'>@humble</a> on Twitter, Google+, and Facebook for the latest Humble Bundle status reports:
3301 </p>
3302 <div class="download-social-alignment">
3303 <a href="https://twitter.com/humble" class="twitter-follow-button" data-show-count="true" data-size="large">Follow @humble</a>
3304 <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
3305 <!-- Place this tag where you want the widget to render. -->
3306
3307 <div class="g-follow" data-annotation="bubble" data-height="24" data-href="//plus.google.com/103555773917939181320" data-rel="publisher"></div>
3308
3309 <div class="fb-like" data-href="https://www.facebook.com/humblebundle" data-width="250px" data-colorscheme="light" data-layout="standard" data-action="like" data-show-faces="false" data-send="false"></div>
3310 </div>
3311
3312 </div>
3313 </div>
3314
3315 <div class="js-coupon-whitebox-holder"></div>
3316 <div class="js-credit-whitebox-holder"></div>
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331<div class='generic-popup outer-shadow' id='confirm-content-event-choice-dialog'>
3332 <div class='generic-popup content'>
3333 <h1><span class='main-base-arrow'></span>Confirm Choice</h1>
3334 <form action='/humbler/choosecontent' method='post' data-input-prefix='confirm-content-event-choice-'>
3335 <input type='hidden' name='gamekey' value='wWuG2hMxeynmcRrC'>
3336 <input type='hidden' name='parent_identifier' value=''>
3337 <input type='hidden' name='chosen_identifier' value=''>
3338
3339 <div class='message-holder'>Once you make your choice, you will not be able to change it. Are you sure you want to choose this option?</div>
3340 <div class='no-center'>
3341 <span class='input-holder'><span id='confirm-content-event-choice-dummy'></span></span>
3342 <div class='button-holder'>
3343 <a class='button-link cancel' href='#' data-goto=''><span class='gray-button'>Cancel</span></a>
3344 <a class='button-link green-button submit js-submit' href='#'>Confirm</a>
3345 </div>
3346 <div class='clearfix'></div>
3347 </div>
3348 </form>
3349 </div>
3350</div>
3351<script type='text/javascript'>
3352require(['account/accountModals'], function(AccountModals) {
3353 $(function(){
3354
3355 $('.js-choose-content-form').submit(function(e) {
3356 e.preventDefault();
3357
3358 var $form = $(this);
3359 var $dialog = $('#confirm-content-event-choice-dialog');
3360 if ($dialog.closest('.grayout').length == 0) {
3361 var marginTop = '-' + ($dialog.height() / 2) + 'px';
3362 $dialog.css('margin-top', marginTop).fadeIn();
3363 $dialog.appendTo($('.grayout'));
3364 } else {
3365 $dialog.show();
3366 }
3367 $('.grayout').fadeIn();
3368
3369 $dialog.find('input[name=parent_identifier]').val($form.find('input[name=parent_identifier]').val());
3370 $dialog.find('input[name=chosen_identifier]').val($form.find('input[name=chosen_identifier]:checked').val());
3371 });
3372
3373 $('#confirm-content-event-choice-dialog form .js-submit').click(function (event) {
3374 event.preventDefault();
3375 var $form = $(event.target).closest('form'),
3376 url = $form.attr('action'),
3377 data = $form.serialize();
3378
3379 $.ajax({
3380 type: 'POST',
3381 url: url,
3382 data: data,
3383 dataType: 'json',
3384
3385 success: function(data) {
3386 if (data.success) {
3387 if (data.force_refresh) {
3388 window.location.reload();
3389 }
3390 } else {
3391 if (data.errors) {
3392 var errorStr = '';
3393 for (var fieldName in data.errors) {
3394 errorStr = data.errors[fieldName][0];
3395 }
3396 if (errorStr) {
3397 AccountModals.displayDialog('Error', errorStr, data.goto);
3398 }
3399 }
3400 }
3401 }
3402 });
3403 });
3404 });
3405});
3406</script>
3407
3408
3409
3410
3411
3412 <div class="js-asm-switcher-holder asm-download-page"></div>
3413
3414
3415
3416
3417
3418
3419 <div class="js-subproduct-whitebox-holder"></div>
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434<script id='gift-confirm-dialog-template' type='text/template'>
3435<div class='generic-popup outer-shadow' id='gift-confirm-dialog'>
3436 <div class='generic-popup content'>
3437 <h1 class='noimg'>Gift this item?</h1>
3438 <h2 class='subtitle'>Gifting this item removes it from your order and turns it into a giftable link. You can't undo this action.</h2>
3439 <div class='no-center'>
3440 <div class='button-holder'>
3441 <a class='button-link cancel' href='#' data-goto=''><span class='gray-button'>Cancel</span></a>
3442 <a class='button-link submit' href='#'><span class='green-button'>Create Gift Link</span></a>
3443 </div>
3444 <div class='clearfix'></div>
3445 </div>
3446 </div>
3447</div>
3448</script>
3449
3450
3451
3452
3453
3454
3455
3456
3457<div class='whitebox small'>
3458 <div class='whitetop'></div>
3459 <div class='whitemid'></div>
3460 <div class='whitebottom'></div>
3461 <div class='whitecontent'>
3462 <div class='ebookinstructions' id='kindleinstructions'>
3463 <a href="#" class='js-slide-down-trigger slide-down-trigger'>Send the eBooks to my Kindle or Kindle reader</a>
3464 <div class="slide-down">
3465 <h2>Via USB</h2>
3466 <div class='stepholder'>
3467 <div class='step num1'></div>
3468 <div class='steptext'>
3469 <h3>Download your desired eBooks below as MOBI</h3>
3470 </div>
3471 </div>
3472 <div class='stepholder'>
3473 <div class='step num2'></div>
3474 <div class='steptext'>
3475 <h3>Follow <a href='http://www.amazon.com/gp/help/customer/display.html?nodeId=200798780' target='_blank'>Amazon's official instructions on transferring your eBooks via USB</a></h3>
3476 </div>
3477 </div>
3478
3479 <h2>Via Email</h2>
3480 <div class='stepholder'>
3481 <div class='step'></div>
3482 <div class='steptext'>
3483 <h3>Warning: Graphic novels must be transferred via USB due to their large file size of 10MB or more.</h3>
3484 </div>
3485 </div>
3486 <div class='stepholder'>
3487 <div class='step num1'></div>
3488 <div class='steptext'>
3489 <h3>Ensure your device is connected to the internet</h3>
3490 <p>To avoid mobile data charges, we recommend using Wi-Fi to transfer the eBooks to your device.</p>
3491 </div>
3492 </div>
3493 <div class='stepholder'>
3494 <div class='step num2'></div>
3495 <div class='steptext'>
3496 <h3>Allow Humble Bundle to email your Kindle account</h3>
3497 <p>
3498 Visit Amazon's <a href='https://www.amazon.com/gp/digital/fiona/manage?ie=UTF8' target='_blank'>Manage Your Kindle</a> page and select the Settings tab.
3499 Locate the section titled <em><strong>Approved Personal Document E-mail List</strong></em>, click <em><strong>Add a new approved e-mail address</strong></em>, and type:
3500 <pre class='pre-box'>kindle@humblebundle.com</pre>
3501 </p>
3502 </div>
3503 </div>
3504 <div class='stepholder'>
3505 <div class='step num3'></div>
3506 <div class='steptext'>
3507 <h3>Select which eBooks to Email</h3>
3508 <p>
3509 From the <a href='https://www.amazon.com/mn/dcw/myx.html#/home/settings/payment' target='_blank'>Settings</a> page above, locate your Kindle email ending in @kindle.com from the <em><strong>Send-to-Kindle E-Mail Settings</strong></em> section and enter it into the input box below.
3510 </p>
3511 <p>
3512 Please note that you can now send individual titles to your Kindle!
3513 Simply select which book(s) you would like to send below before hitting the "Send Email" button.
3514 If you experience issues receiving your eBooks (sometimes caused by certain types of eReaders and the size of the eBooks), you may want to use this option.
3515 </p>
3516 <p>
3517 Please be aware that only certain titles are listed and available to send using this feature due to a 10MB size restriction.
3518 </p>
3519 <form method='POST' action='/util/kindle' class='sms-form' id='ebook-email-form'>
3520 <input type='hidden' name='key' value='wWuG2hMxeynmcRrC'>
3521 <div class='clearfix'></div>
3522 <input id='email-kindle' class='classy-input' type='text' name='email_prefix' value='' placeholder='Your kindle address'> <strong>@free.kindle.com</strong>
3523 <input type='submit' id='send-ebook-email' class='button-link green-button' value='Send Email'>
3524 <div class='clearfix'></div>
3525 <div id='send-email-message'></div>
3526 <div class='clearfix'></div>
3527 <p class='email-details'>
3528 We use the <em>@free.kindle.com</em> email domain <a href='http://www.amazon.com/gp/help/customer/display.html/?nodeId=200767340#fees' target='_blank'>to avoid charging you</a>.
3529 </p>
3530 <br>
3531 </form>
3532 <p>Try syncing your device with the Kindle server if eBooks are not appearing.</p>
3533 </div>
3534 </div>
3535 </div>
3536 </div>
3537 </div>
3538</div>
3539
3540
3541<div class='whitebox small'>
3542 <div class='whitetop'></div>
3543 <div class='whitemid'></div>
3544 <div class='whitebottom'></div>
3545 <div class='whitecontent'>
3546 <div class='ebookinstructions' id='otherebookinstructions'>
3547
3548
3549 <a href='https://support.humblebundle.com/hc/en-us/articles/202712300' target='_blank' class='open-in-external-window'>
3550
3551 Instructions for Android, Nook, Kindle, and iOS devices</a>
3552 </div>
3553 </div>
3554</div>
3555
3556
3557
3558
3559
3560 <div class="js-gamelist-holder"></div>
3561
3562
3563
3564
3565 <div id='share-box'>
3566 <p>
3567 While you are waiting for your downloads to complete, please consider spreading the word!
3568 </p>
3569 <div id='normal'>
3570
3571
3572
3573
3574
3575<div class='social-media-shares'>
3576
3577
3578 <div class='sharer l twittershare'>
3579 <a href='http://twitter.com/share?url=https%3A//www.humblebundle.com/books/cybersecurity-wiley&via=humble&text=Pay%20what%20you%20want%20for%20cybersecurity%20ebooks%20and%20support%20charity%21'
3580 class='twitter-share-button' data-url='https://www.humblebundle.com/books/cybersecurity-wiley'
3581 data-text='Pay%20what%20you%20want%20for%20cybersecurity%20ebooks%20and%20support%20charity%21'
3582 data-count='horizontal' data-via='humble'></a>
3583</div>
3584
3585
3586
3587
3588 <div class='sharer l fb'>
3589 <fb:like href='https://www.humblebundle.com/books/cybersecurity-wiley' send='false' layout='button_count' width='90' show_faces='false' font='arial'></fb:like>
3590</div>
3591
3592
3593
3594
3595 <div class='sharer l plus'>
3596 <g:plusone size='medium' href='https://www.humblebundle.com/books/cybersecurity-wiley'></g:plusone>
3597</div>
3598
3599
3600
3601
3602 <script>
3603 reddit_url = 'https://www.humblebundle.com/books/cybersecurity-wiley';
3604 reddit_target = 'books';
3605</script>
3606<div class='sharer l reddit'></div>
3607 <script>
3608
3609
3610function run_once(name, f) {
3611 if (window["run_once_" + name]) {
3612 return;
3613 } else {
3614 f();
3615 window["run_once_" + name] = true;
3616 }
3617}
3618
3619$(window).load(function() {
3620 var f = (function() {
3621 if ('https:' == document.location.protocol) {
3622 var base_url = 'https://redditstatic.s3.amazonaws.com'
3623 } else {
3624 var base_url = 'http://www.reddit.com/static'
3625 }
3626
3627 var write_string="<iframe src=\"" + base_url + "/button/button1.html?width=120&url=";
3628
3629 if (window.reddit_url) {
3630 write_string += encodeURIComponent(reddit_url);
3631 }
3632 else {
3633 write_string += encodeURIComponent(window.location.href);
3634 }
3635 if (window.reddit_title) {
3636 write_string += '&title=' + encodeURIComponent(window.reddit_title);
3637 }
3638 if (window.reddit_target) {
3639 write_string += '&sr=' + encodeURIComponent(window.reddit_target);
3640 }
3641 if (window.reddit_css) {
3642 write_string += '&css=' + encodeURIComponent(window.reddit_css);
3643 }
3644 if (window.reddit_bgcolor) {
3645 write_string += '&bgcolor=' + encodeURIComponent(window.reddit_bgcolor);
3646 }
3647 if (window.reddit_bordercolor) {
3648 write_string += '&bordercolor=' + encodeURIComponent(window.reddit_bordercolor);
3649 }
3650 if (window.reddit_newwindow) {
3651 write_string += '&newwindow=' + encodeURIComponent(window.reddit_newwindow);}
3652 write_string += "\" height=\"22\" width=\"120\" scrolling='no' frameborder='0'></iframe>";
3653 $("div.reddit.sharer").append($(write_string));
3654 });
3655
3656 run_once("reddit", f);
3657});
3658</script>
3659
3660</div></div>
3661 <div style='clear:both;'></div>
3662 </div>
3663
3664
3665
3666
3667
3668
3669 <script type='text/template' id='stats-template'>
3670 <div class='stats-box'>
3671 <div class='stats-col-1-of-3'>
3672 <h4>Numbers</h4>
3673 <dl>
3674
3675 <dt>Total payments:</dt>
3676 <dd class='total_contributed'></dd>
3677 <dt>Number of purchases:</dt>
3678 <dd class='total_contributions'></dd>
3679 <dt>Average purchase:</dt>
3680 <dd class='average_contribution'></dd>
3681
3682 <dt>Average Windows:</dt>
3683 <dd class='average_windows'></dd>
3684 <dt>Average Mac:</dt>
3685 <dd class='average_mac'></dd>
3686 <dt>Average Linux:</dt>
3687 <dd class='average_linux'></dd>
3688
3689
3690 </dl>
3691 <p class='pubnub-promo'><i class="hb hb-info"></i> Real-time updating by <a href='http://www.pubnub.com/' target='_blank' title="This is our humble estimate for payments that are coming in. It does not account for merchant fees, canceled payments, or other merchant related issues.">PubNub</a></p>
3692 </div>
3693 <div class='stats-col-2-of-3'>
3694 <h4>Total Paid by Platform</h4>
3695
3696
3697
3698 <img class='piechart'
3699 data-color-src='//chart.googleapis.com/chart?cht=p&chs=150x150&chco=ff8800|b90f00|001fba&chd=t:<%= percent_mac %>,<%= percent_windows %>,<%= percent_linux %>&chf=bg,s,00000000&chdlp=r'
3700 data-grayscale-src='//chart.googleapis.com/chart?cht=p&chs=150x150&chco=999999|666666|333333&chd=t:<%= percent_mac %>,<%= percent_windows %>,<%= percent_linux %>&chf=bg,s,00000000&chdlp=r'
3701 alt='Mac, Windows, and Linux total revenue breakdown' />
3702 <ul class='chartlegend'>
3703 <li><span class='chartcolor' data-color='#ff8800' data-grayscale-color='#999999'></span><span>Mac</span></li>
3704 <li><span class='chartcolor' data-color='#b90f00' data-grayscale-color='#666666'></span><span>Windows</span></li>
3705 <li><span class='chartcolor' data-color='#001fba' data-grayscale-color='#333333'></span><span>Linux</span></li>
3706 </ul>
3707 </div>
3708 <div class='stats-col-3-of-3'>
3709 <h4>Top Contributors</h4>
3710 <dl class='contributor-list'>
3711<% for (var ii = 0; ii < leaderboard_data.length; ii++ ) { %>
3712 <dt title='<%= leaderboard_data[ii].name %>'>
3713 <span class='number'><%- ii + 1 %>.</span>
3714 <span class='contributor-name'><%= leaderboard_data[ii].name %></span>
3715 </dt>
3716 <dd><%- leaderboard_data[ii].amount %></dd>
3717<% } %>
3718 </dl>
3719 </div>
3720</div>
3721 </script>
3722 <script type='application/json' id='leaderboard-data'>
3723 [{"amount": "$555.00", "name": "Anonymous"}, {"amount": "$325.00", "name": "Anonymous"}, {"amount": "$313.37", "name": "Premonition.io"}, {"amount": "$300.00", "name": "Anonymous"}, {"amount": "$250.00", "name": "@seanmcelroy"}, {"amount": "$223.00", "name": "Nobody"}, {"amount": "$213.37", "name": "Anonymous"}, {"amount": "$200.00", "name": "Anonymous"}, {"amount": "$170.00", "name": "Anonymous"}, {"amount": "$150.00", "name": "@kingbytewolf"}]
3724 </script>
3725 <div class='whitebox'>
3726 <div class='whitetop'></div>
3727 <div class='whitemid'></div>
3728 <div class='whitebottom'></div>
3729 <div class='whitecontent'>
3730 <a name='stats'></a>
3731 <div id='stats-holder'></div>
3732 </div>
3733 </div>
3734
3735
3736
3737
3738<div class='whitebox'>
3739 <div class='whitetop'></div>
3740 <div class='whitemid'></div>
3741 <div class='whitebottom'></div>
3742 <div class='whitecontent'>
3743 <form id='settings' action='/humbler/update/wWuG2hMxeynmcRrC' method='post'>
3744 <div style='text-align:center;'>Your Humble Bundle settings:</div>
3745
3746 <div class='already-claimed' style="float:right;">This page is claimed by <strong>you</strong>.</div>
3747
3748
3749
3750 <div>
3751 <label><input type='checkbox' name='leaderboard' value='false' /> <span>Please remove me from the leaderboard</span></label>
3752 <br />
3753 <a href='https://support.humblebundle.com/hc/en-us/articles/202421394-top-contributor-faq' target='_blank'>Top Contributor FAQ</a>
3754 </div>
3755
3756 <div class='submitholder'>
3757 <input type='submit' value='Update' />
3758 <div class='settings indicator'></div>
3759 </div>
3760 </form>
3761
3762 </div>
3763 <script type="text/javascript">
3764 // form submit
3765 $(document).ready(function(){
3766 var $form = $('#settings');
3767 var $indicator = $form.find('.indicator');
3768 $form.css({'visibility':'visible'});
3769 $form.submit(function(e){
3770 e.preventDefault();
3771 $indicator.addClass('on');
3772 var serialized = $form.serialize();
3773 var url = $form.attr('action');
3774 $.ajax({
3775 type: 'POST',
3776 url: url,
3777 data: serialized,
3778 success: function() {
3779 $indicator.removeClass('on');
3780 show_flash('Settings updated!');
3781 },
3782 error: function() {
3783 $indicator.removeClass('on');
3784 show_flash('Error updating settings!');
3785 }
3786 });
3787 });
3788 });
3789 </script>
3790</div>
3791
3792
3793
3794 </div>
3795 </div>
3796 <div class='clear'></div>
3797 </div>
3798
3799 <script type="text/javascript">
3800 $(function () { ga('send', 'pageview', '/downloadpage'); })
3801 </script>
3802</div>
3803
3804</div><script id='asm-switcher-template' type="text/template">
3805 <h1 class="heading">Humble asm.js Games</h1>
3806 <img src="https://humblebundle-a.akamaihd.net/static/hashed/47c1990235eb2e1f62be175ae3d6cf187f8ad457.png" alt="expand" class="js-toggle-collapsable toggle-collapsable visible"/>
3807 <img src="https://humblebundle-a.akamaihd.net/static/hashed/6681e6d3b3e00fbf9d3142767002d6420f1af623.png" alt="collapse" class="js-toggle-collapsable toggle-collapsable "/>
3808
3809
3810 <i class="js-do-confirm-close do-confirm-close hb hb-times"></i>
3811 <div class="collapsable">
3812 <div class="player-panel">
3813 <%= playerPanel %>
3814 </div>
3815<% if (recFirefoxUpdate) { %>
3816 <div class="rec-firefox-update">
3817 <a href="https://www.getfirefox.com/">Get the latest version of Mozilla Firefox to get the best browser gaming experience possible.</a>
3818 </div>
3819<% } %>
3820 <div class="game-button-panel"></div>
3821 </div>
3822</script>
3823
3824
3825<script id='asm-switcher-player-panel' type="text/template">
3826 <div class="modal-holder"></div>
3827 <div class="curtain"></div>
3828 <div class="dialogs">
3829 <img class='dialog spinner' src="https://humblebundle-a.akamaihd.net/static/hashed/2de55388a5f1201232a4c2b6a8d4f83b5006f418.gif" alt=""/>
3830 </div>
3831 <div class="iframe-holder" style="background: #000"></div>
3832</script>
3833
3834<script id='asm-switcher-game-list' type="text/template">
3835 <div class="game-list">
3836 <% for(var game_machine_name in games) { %>
3837 <% var gameDict = games[game_machine_name]; %>
3838 <div class="game-button asm-switch <% if (machineName === game_machine_name) { %>selected<% } %>" data-machine-name="<%- game_machine_name %>">
3839 <p title="<%- gameDict.human_name %>"><%- gameDict.human_name %></p>
3840 <div class='progress-bar'>
3841 <div class='progress-done'></div>
3842 </div>
3843 </div>
3844 <% } %>
3845 </div>
3846</script>
3847
3848
3849<script id="js-download-list-template" type="text/template">
3850 <div class="js-platform-chooser-holder"></div>
3851<div class="js-pre-downloads-holder"></div>
3852<div class="js-progress-bar-holder"></div>
3853<div class="js-all-downloads-holder"></div>
3854<div class="error-holder js-error-holder"></div>
3855</script>
3856
3857<script id="js-gamelist-message-template" type="text/template">
3858 <div class="custom-download-text">
3859 <%= download_struct.message %>
3860</div>
3861</script>
3862
3863<script id='js-platform-chooser-template' type="text/template">
3864 <div class="js-platform-chooser platform-chooser">
3865 <div class="dlplatform">
3866 <div class='textlabel'>Choose platform:</div>
3867 <div class='dlplatform-list'>
3868 <% for (var i in platforms) { %>
3869 <% var platform = platforms[i] %>
3870 <% var platform_obj = allPlatforms[platform] %>
3871 <div data-platform='<%= platform %>' class='flexbtn<% if (platform == activePlatform) { %> active<% } %> <%= platform %>'>
3872 <div class='icon'></div>
3873 <div class='right'></div>
3874 <span class='label'><%= platform_obj.human_name %></span><a class='a' href='#'><%= platform_obj.human_name %></a>
3875 </div>
3876 <% } %>
3877 </div>
3878 </div>
3879 <div style='clear:both;padding:4px;'></div>
3880<% if (hasBittorrent) { %>
3881 <div class='dltype'>
3882 <div class='textlabel'>Choose download type:
3883 </div>
3884 <div data-type='direct' class='flexbtn direct active'>
3885 <div class='icon'></div>
3886 <div class='right'></div>
3887 <span class='label'>Direct link</span><a class='a' href='#'>Direct link</a>
3888 </div>
3889 <div data-type='bittorrent'
3890 class='flexbtn bittorrent'>
3891 <div class='icon'></div>
3892 <div class='right'></div>
3893 <span class='label'>BitTorrent</span><a class='a' href='#'>BitTorrent</a>
3894 </div>
3895 </div>
3896 <div style='clear:both;padding:4px;'></div>
3897<% } %>
3898</div>
3899<div class="clear-fix"></div>
3900</script>
3901
3902<script id='js-gamelist-loading-template' type="text/template">
3903 <div class="loading">
3904 <h1>Loading...</h1>
3905 <img src="https://humblebundle-a.akamaihd.net/static/hashed/26faf55c6e36ba3b1a57f9001942059fe05050f2.gif" alt=""/>
3906</div>
3907</script>
3908
3909<script id='js-progress-bar-template' type="text/template">
3910 <div id="download-page-progress-bar">
3911 <div id="download-page-outer-progress">
3912 <div id="download-page-inner-progress"></div>
3913 </div>
3914 <div id="download-page-progress-text"></div>
3915</div>
3916</script>
3917
3918<script id='js-android-instructions-template' type="text/template">
3919 <div class='custominstructions instructionsteps android hide_downloads'>
3920
3921
3922
3923<h3>Android Installation Instructions</h3>
3924
3925<p>Follow these instructions to <a href="/app" target="_blank">install the Humble Bundle app.</a></p>
3926
3927<p>You can also access your downloads by opening your order page on your mobile device.</p>
3928
3929<p>Enter your phone number below and we will send you the link via SMS:</p>
3930
3931
3932
3933
3934<form id="sms-form" class="sms-form" method="POST" action="/util/sms" >
3935 <input type="hidden" name="channel" value="BUm1h9svg4KLn3Ff">
3936
3937
3938 <input type="hidden" name="key" value="wWuG2hMxeynmcRrC">
3939
3940
3941 <label class="form-label country-code-label" for="country-code">country code</label>
3942 <label class="form-label phone-number-label" for="phone-number">phone number <span class="area-code">(including area code)</span></label>
3943 <span class="plus-sign">+</span>
3944 <input id="country-code" class="country-code-field classy-input" type="number" name="countrycode" value="1">
3945 <input id="phone-number" class="phone-number-field classy-input" type="tel" name="number" value="">
3946 <input id="send-sms" class="send-sms-button green-button" type="submit" value="Send SMS">
3947
3948 <p class="sms-disclaimer">Standard SMS rates may apply.</p>
3949
3950 <p id="sms-message" class="sms-message"></p>
3951</form>
3952 <div class='clear'></div>
3953 <p>Or, use the widget below to re-send the link to your email address:</p>
3954 <form id='send-email-form' method='POST' action='/util/sendemail' class='sms-form'>
3955 <input type='hidden' name='key' value='wWuG2hMxeynmcRrC'>
3956 <label for='email-truncated'>The email will be sent to the address you entered when you purchased the bundle.</label>
3957 <div class='clearfix'></div>
3958
3959 <input class='classy-input' id='email-truncated' disabled='disabled' type='text' name='number' value='jo...@...il.com'>
3960 <input type='submit' id='send-email' class='button-link green-button' value='Send Email'>
3961 <div class='clearfix'></div>
3962 <div id='send-email-message'></div>
3963 <div class='clearfix'></div>
3964 </form>
3965
3966<p>If you would like to install the games using another method, you
3967 can use the links below to download the APK files to your computer:</p>
3968
3969<div id='show_android_binaries'>
3970<a href='#' class='expandkeys'>Show Android Binaries</a>
3971<div class='clear'></div>
3972</div>
3973
3974<script type='text/javascript'>
3975 $(document).ready(function () {
3976 function isValidPhoneNumber(numberStr) {
3977 var rePattern = /[^\d]/;
3978 return numberStr && (numberStr.length > 3) && !numberStr.match(rePattern);
3979 }
3980
3981 function getFullNumber() {
3982 var localnumber = $('#phone-number').val().toString().replace(/[\-\s\(\)]/g, '');
3983 var countrycode = $('#country-code').val().toString().replace(/[\-\s\(\)]/g, '');
3984 return countrycode + localnumber;
3985 }
3986
3987 var $smsForm = $('#sms-form');
3988 var INVALID_PHONE = 'Please enter your phone number using only the digits 0 through 9.';
3989
3990 $smsForm.submit(function(e) {
3991 e.preventDefault();
3992
3993 $('#sms-message').text('').hide();
3994 var assembled = getFullNumber();
3995 if (isValidPhoneNumber(assembled)) {
3996 $('#sms-message').text('Sending...').show();
3997
3998 $.ajax({
3999 url: $smsForm.attr('action'),
4000 dataType: 'json',
4001 type: 'POST',
4002 data: $smsForm.serialize(),
4003 success: function(data) {
4004 if (data && !data.success) {
4005 var message = '';
4006 if (data.error === 'noorder') {
4007 message = 'Your key(s) are invalid.';
4008 } else if (data.error === 'nonumber') {
4009 message = INVALID_PHONE;
4010 } else if (data.error === 'ratelimited') {
4011 message = 'You are sending too many SMS messages. Please try again in 24 hours.';
4012 } else {
4013 message = 'Unknown error';
4014 }
4015 $('#sms-message').text('Error: ' + message).show();
4016 } else {
4017 $('#sms-message').text('').hide();
4018 }
4019 },
4020 error: function(data) {
4021 $('#sms-message').text('There was an unknown error while sending the SMS.').show();
4022 }
4023 });
4024 }
4025 });
4026
4027 var $smsMessage = $('#sms-message');
4028 pubnub_client.subscribe({
4029 'channel': 'BUm1h9svg4KLn3Ffsmsresult',
4030 'callback': function(message) {
4031 if (console) console.log('got a message');
4032 var assembled = getFullNumber();
4033
4034 $smsMessage.css('padding-top', '10px');
4035 if (message.success) {
4036 $smsMessage.text('Success! The link was sent to +' + assembled +' and should be arriving shortly.');
4037 } else {
4038 $smsMessage.text('We are having trouble sending the message, but will keep trying.');
4039 }
4040 }
4041 });
4042});
4043 var $emailForm = $('#send-email-form');
4044
4045$emailForm.submit(function (e) {
4046 e.preventDefault();
4047 $('#send-email-message').text('').css('padding-top','0');
4048 $.post(
4049 $emailForm.attr('action'),
4050 $emailForm.serialize(),
4051 function(data) {
4052 data = $.parseJSON(data);
4053 if (!data.success) {
4054 var message = '';
4055 if (data.error === 'noorder') {
4056 message = 'Your key(s) are invalid.';
4057 } else if (data.error == 'noemail') {
4058 message = 'Your email address is invalid.';
4059 } else if (data.error == 'ratelimited') {
4060 message = 'You are sending emails too quickly. Please try again in 24 hours.';
4061 } else {
4062 message = 'Unknown error';
4063 }
4064 $('#send-email-message').text('There was an error: ' + message).css('padding-top','10px');
4065 } else {
4066 $('#send-email-message').text('Email sent!').css('padding-top','10px');
4067 }
4068 }
4069 );
4070});
4071
4072$('#send-email').click(function(e) {
4073 e.preventDefault();
4074 $emailForm.submit();
4075});
4076</script>
4077
4078
4079</div>
4080</script>
4081
4082<script id="js-canonical-template" type="text/template">
4083 <div class='custominstructions linux' id='ubuntuinstructions'>
4084 <h2>Click the button below to redeem your bundle on the Ubuntu Software Center.</h2>
4085 <a href='https://software-center.ubuntu.com/coupons/<%= product_machine_name %>/?key=<%= gamekey %>&utm_source=humblebundle&utm_medium=download&utm_campaign=<%= product_machine_name %>'>
4086 <img src='https://humblebundle-a.akamaihd.net/static/hashed/b40b894cf171bca8af0a30601d41d59425d4b6ba.png' alt='Download for Ubuntu'/>
4087 </a>
4088</div>
4089</script>
4090
4091<script id="js-custom-whitebox-template" type="text/template">
4092 <div class='whitebox'>
4093 <div class='whitetop'></div>
4094 <div class='whitemid'></div>
4095 <div class='whitebottom'></div>
4096 <div class='whitecontent'>
4097 <%= custom_html %>
4098 </div>
4099</div>
4100</script>
4101
4102<script id="js-coupon-box-template" type="text/template">
4103 <div class="whitebox-redux coupon">
4104 <div class="coupon-info">
4105
4106 <div class="column">
4107 <div class="media-object">
4108 <div class="avatar">
4109<% if (coupon.storefront_product) { %>
4110 <img class="coupon-icon" src="<%- coupon.storefront_product.icon %>">
4111<% } else { %>
4112 <img class="coupon-icon" src="<%= humble_icon %>">
4113<% } %>
4114 </div>
4115
4116 <div class="details">
4117 <div class="coupon-name"> <%- coupon.coupon_human_name %> <div class="js-coupon-admin-edit" data-entity-kind="coupon" data-machine-name="<%- coupon.coupon_machine_name %>"></div>
4118 </div>
4119<% if (coupon.coupon_status == 'used') { %>
4120 <div>*Already redeemed*</div>
4121<% } else if (coupon.coupon_status == 'expired') { %>
4122 <div class="expired">*This coupon expired on <%= couponModel.get_expiration_date_as_string() %>*</div>
4123<% } else if (coupon.coupon_status == 'unused' && coupon.coupon_expiration) { %>
4124 <div>Expires <%= couponModel.get_expiration_date_as_string() %></div>
4125<% } %>
4126 <a href="#" class="coupon-terms js-show-coupon-terms">Coupon Details</a>
4127 </div>
4128 </div>
4129 </div>
4130
4131 <div class="column">
4132<% if (coupon.storefront_product) { %>
4133 <% if (coupon.coupon_status == 'used') { %>
4134 <a href="/home/purchases">View purchase</a>
4135 <% } else if (coupon.coupon_status == 'expired') { %>
4136 <a href="<%- '/store/' + coupon.storefront_product.human_url %>">View game in store</a>
4137 <% } else if (coupon.coupon_status == 'unused') { %>
4138 <% if (!_.isEmpty(coupon.storefront_product.platform_icon_dict)) { %>
4139 <%= render_platform_icons(coupon.storefront_product.platform_icon_dict) %>
4140 <% } %>
4141 <% if (coupon.coupon_type == 'discount-percentage') { %>
4142 <span class="discount-amount">
4143 -<%= coupon.coupon_discount %>%
4144 </span>
4145 <% } else if (coupon.coupon_type == 'credit-amount') { %>
4146 <span class="discount-amount">
4147 -<%= moneyfmt(coupon.coupon_credit, coupon.storefront_product.currency) %>
4148 </span>
4149 <% } %>
4150 <span class="discount-price">
4151 <% // BTW, Discount price is calculated differently depending on coupon type
4152 %>
4153 <%= moneyfmt(coupon.storefront_product.discount_price, coupon.storefront_product.currency) %>
4154 </span>
4155 <% } %>
4156
4157<% } else { %>
4158 <% if (coupon.coupon_status == 'used') { %>
4159 <a href="/home/purchases">View purchase</a>
4160 <% } else if (coupon.coupon_status == 'expired') { %>
4161 <a href="/store">View store</a>
4162 <% } else if (coupon.coupon_status == 'unused') { %>
4163 <% if (coupon.subscriptions && _.contains(coupon.subscriptions , 'humble_monthly')) { %>
4164 <a href="/monthly" class="round-active-button" target="_blank">Check it out</a>
4165 <% } else { %>
4166 <a href="<%= coupon.coupon_storefront_link %>" class="round-active-button" target="_blank">View store</a>
4167 <% } %>
4168 <% } %>
4169<% } %>
4170 </div>
4171
4172 </div>
4173
4174<% if (coupon.storefront_product && coupon.coupon_status == 'unused') { %>
4175 <div class="redeem-product">
4176 <span class="redeem-callout">
4177 Apply your coupon and go straight to checkout:
4178 <a href="<%- '/store/' + coupon.storefront_product.human_url + '/coupon' + coupon.coupon_key %>" class="round-active-button" target="_blank">
4179 Redeem now!
4180 </a>
4181 </span>
4182 </div>
4183<% } %>
4184
4185 </div>
4186</script>
4187
4188<script id="js-credit-box-template" type="text/template">
4189 <div class="whitebox-redux credit">
4190 <div class="credit-info">
4191<% if (settled) { %>
4192 <p>This order added <%- moneyfmt(amount, currency) %> to your <a href='/user/wallet'>Humble Wallet</a>.</p>
4193<% } else if (claimed) { %>
4194 <% if (has_wallet) { %>
4195 <p>This order grants <strong><%- moneyfmt(amount, currency) %></strong> worth of credit for the Humble Store. Add it to your Humble Wallet now: <button class='button blue js-redeem-humblewallet-credit' data-gamekey='<%= gamekey %>'>Add to my Wallet</button></p>
4196 <% } else { %>
4197 <p>Set up your <a href='/user/wallet/create?goto=%2Fdownloads%3Fkey%3D<%= page_gamekey %>'>Humble Wallet</a> and return to this page to redeem <%- moneyfmt(amount, currency) %> worth of credit for the Humble Store.</p>
4198 <% } %>
4199<% } else { %>
4200 <% if (signed_in) { %>
4201 <p>This order grants <strong><%- moneyfmt(amount, currency) %></strong> worth of credit for the Humble Store. To add it to your Humble Wallet: <button class='button blue js-claim-page' href='#' data-gamekey='<%= gamekey %>'>Claim this order</button></p>
4202 <% } else { %>
4203 <p><a class='a account-login' data-target-popup='#account-login' href='/bundle/claim?claimkey=<%= page_gamekey %>'>Sign in to claim this page</a> and redeem <%- moneyfmt(amount, currency) %> worth of credit for the Humble Store.</p>
4204 <% } %>
4205<% } %>
4206
4207 <div class="js-credit-admin-edit" data-entity-kind="product" data-anchor-name="#row_pricing" data-machine-name="<%- machine_name %>"></div>
4208 </div>
4209 </div>
4210</script>
4211
4212<script id="js-missed-credit-box-template" type="text/template">
4213 <div class="whitebox-redux credit">
4214 <div class="credit-info">
4215 <p>
4216 This order would have added <%- amount %> to your <a href='/user/wallet'>Humble Wallet</a>.
4217 <a href='/monthly'>Subscribe to Humble Monthly</a> now for future rewards!
4218 </p>
4219 </div>
4220 </div>
4221</script>
4222
4223
4224<script id="js-credit-redeem-message" type="text/template">
4225 <div class="whitebox-redux credit">
4226 <div class="credit-info">
4227<% if (success) { %>
4228 Success! The credit has been added to <a href='/user/wallet'>your Humble Wallet</a>.
4229<% } else { %>
4230 Error: There was a problem adding the credit to your Humble Wallet.
4231<% } %>
4232 </div>
4233 </div>
4234</script>
4235
4236<div id='large-download-warning' class='download-popup'>
4237 <h2>This is a very large download</h2>
4238
4239 <p class='bittorrent-warning'>
4240 We recommend the BitTorrent option for this file, to ensure that there are no interruptions or risks of data
4241 corruption during the download.
4242 </p>
4243
4244 <p class='bittorrent-warning'>
4245 Our BitTorrent files contains a "webseed" from the same content delivery network that powers our regular downloads,
4246 which means that it will be downloaded over both HTTP and from BitTorrent users who share their bandwidth for the
4247 fastest experience possible.
4248 </p>
4249
4250 <p class='warning-text fat32-warning'>
4251 Warning: This file cannot be downloaded on FAT32 file systems (commonly found on USB thumb drives) due to its large
4252 size.
4253 <a href='https://support.humblebundle.com/hc/en-us/articles/202421414' target='_blank'>Click here</a>
4254 for additional details.
4255 </p>
4256
4257 <p class='bittorrent-warning'>Are you sure you want to do a direct download?</p>
4258
4259 <div class='buttonHolder'>
4260 <a href='#' class='button-link use-http bittorrent-warning'><span class='green-button'>Download anyway</span></a>
4261 <a href='#' class='button-link use-bittorrent bittorrent-warning'><span
4262 class='green-button'>Use BitTorrent</span></a>
4263 <a href='#' class='button-link use-http not-bittorrent-warning'><span class='green-button'>Download</span></a>
4264 <a href='#' class='button-link use-bittorrent not-bittorrent-warning'><span class='green-button'>Download</span></a>
4265 <a href='#' class='button-link cancel'><span class='gray-button'>Cancel</span></a>
4266 </div>
4267</div>
4268<div id='confirm-apk' class='download-popup' style='display:none'>
4269 <h2>You are not on an Android device</h2>
4270 <p>This package is intended to be downloaded and installed on an Android device.</p>
4271 <p>Are you sure you want to download it even though you are not using an Android device?</p>
4272 <div class='buttonHolder'>
4273 <a href='#' class='download-anyway button-link'><span class='green-button'>Download anyway</span></a>
4274 <a href='#' class='cancel' class='button-link'><span class='gray-button'>Cancel</span></a>
4275 </div>
4276</div>
4277<script type='text/javascript'>
4278 $(function(){
4279 $('#regular_download_list .android .download .flexbtn').click(function(e){
4280 e.preventDefault();
4281 var $dialog = $('#confirm-apk');
4282 $('.grayout').fadeIn();
4283 $dialog.find('.download-anyway').attr('href', $(e.target).attr('href'));
4284 $dialog.fadeIn();
4285 })
4286 $('.download-anyway').click(function(e){
4287 $('.grayout').fadeOut();
4288 $('#confirm-apk').fadeOut();
4289 })
4290 });
4291</script>
4292
4293
4294
4295
4296<div class='grayout'>
4297 <div class='grayout-inner'>
4298 </div>
4299</div>
4300
4301<div id='site-modal'></div>
4302
4303<script>
4304/* v1.0.1 */(function(b){b.fn.mailcheck=function(a,b){var d="yahoo.com,google.com,hotmail.com,gmail.com,me.com,aol.com,mac.com,live.com,comcast.net,googlemail.com,msn.com,hotmail.co.uk,yahoo.co.uk,facebook.com,verizon.net,sbcglobal.net,att.net,gmx.com,mail.com".split(",");if("object"===typeof a&&void 0===b)a.domains=a.domains||d;else{var e=a,a=b;a.domains=e||d}(d=Kicksend.mailcheck.suggest(encodeURI(this.val()),a.domains))?a.suggested&&a.suggested(this,d):a.empty&&a.empty(this)}})(jQuery);
4305var Kicksend={mailcheck:{threshold:3,suggest:function(b,a){var b=b.toLowerCase(),c=this.splitEmail(b),d=this.findClosestDomain(c.domain,a);return d?{address:c.address,domain:d,full:c.address+"@"+d}:!1},findClosestDomain:function(b,a){for(var c,d=99,e=null,f=0;f<a.length;f++){if(b===a[f])return!1;c=this.stringDistance(b,a[f]);c<d&&(d=c,e=a[f])}return d<=this.threshold&&null!==e?e:!1},stringDistance:function(b,a){if(null==b||0===b.length)return null==a||0===a.length?0:a.length;if(null==a||0===a.length)return b.length;
4306for(var c=0,d=0,e=0,f=0;c+d<b.length&&c+e<a.length;){if(b[c+d]==a[c+e])f++;else for(var g=e=d=0;5>g;g++){if(c+g<b.length&&b[c+g]==a[c]){d=g;break}if(c+g<a.length&&b[c]==a[c+g]){e=g;break}}c++}return(b.length+a.length)/2-f},splitEmail:function(b){b=b.split("@");if(2>b.length)return!1;for(var a=0;a<b.length;a++)if(""===b[a])return!1;return{domain:b.pop(),address:b.join("@")}}}};
4307</script>
4308<script>
4309require(['account/accountModals'], function (accountModals) {
4310 window.modal_attributes = {
4311 request_reason: "",
4312 base_url_secure: "https://www.humblebundle.com",
4313 goto: null,
4314 qs: null,
4315 csrf_token_input: "<input type='hidden' class='csrftoken' name='_le_csrf_token' value='wpOLiPSCcKd_Z-T--1-1506712425' />",
4316 is_eu_country: true
4317 };
4318 accountModals.bindCancelDialog();
4319 accountModals.bindAccountModalHandling({
4320 debug: false,
4321 attributes: window.modal_attributes
4322 });
4323});
4324</script>
4325<div ssl='on' id='pubnub'></div>
4326<script>
4327// log all calls and be able to play them back on another object
4328// sort of like a more generic version of the _gaq object
4329function Replayer(methods) {
4330 this._log = [];
4331 var self = this;
4332
4333 methods.forEach(function(method) {
4334 self[method] = function() {
4335 self._log.push([method, Array.prototype.slice.call(arguments)]);
4336 };
4337 });
4338
4339 this._playback = function (obj) {
4340 self._log.forEach(function(entry) {
4341 methodname = entry[0];
4342 args = entry[1];
4343 method = obj[methodname];
4344 method.apply(obj, args);
4345 });
4346 };
4347}
4348
4349window.pubnub_client = new Replayer(['subscribe', 'history']);
4350
4351var pubnub_async_loader = function(PUBNUB) {
4352 if (typeof PUBNUB === "string") {
4353 PUBNUB = window.PUBNUB;
4354 }
4355
4356 var pubnub_callbacks = {};
4357 /* {
4358 'stats': [callback1, callback2]
4359 'thanks': [thankscallback]
4360 }
4361 */
4362
4363 var register_pubnub_handler = function (channel, callback) {
4364 var channel_callbacks = pubnub_callbacks[channel];
4365 if (channel_callbacks == undefined) {
4366 channel_callbacks = [];
4367 }
4368 channel_callbacks.push(callback);
4369 pubnub_callbacks[channel] = channel_callbacks;
4370 };
4371
4372 var pubnub_delegator = function (message, envelope, channel) {
4373 var callbacks = pubnub_callbacks[channel];
4374 for (var i = 0; i < callbacks.length; i++) {
4375 callbacks[i](message);
4376 }
4377 };
4378
4379 var original_pubnub_client = PUBNUB.init({
4380 noleave: true,
4381 ssl: true,
4382 subscribe_key: '6b5eeae3-796b-11df-8b2d-ef048cc31d2e'
4383 });
4384
4385 var multiplexed_pubnub_client = {};
4386 $.extend(multiplexed_pubnub_client, original_pubnub_client);
4387 multiplexed_pubnub_client.subscribe = function(options) {
4388 var callback = options['callback'];
4389 var channel = options['channel'];
4390 delete options['callback'];
4391 register_pubnub_handler(channel, callback);
4392 options['callback'] = pubnub_delegator;
4393 return original_pubnub_client.subscribe(options);
4394 };
4395 multiplexed_pubnub_client.ready(); // since we fire after the ready event, trigger it on the pubnub object
4396 window.pubnub_client._playback(multiplexed_pubnub_client);
4397 window.pubnub_client = multiplexed_pubnub_client;
4398};
4399// Using requirejs instead of require because it appears that the ACE editor has some sort of conflict.
4400if (typeof requirejs === 'function') {
4401 requirejs(['https://humblebundle-a.akamaihd.net/static/hashed/998cdf8d471fa4ae7935c0bc267cae547fa8826e.js'], pubnub_async_loader)
4402} else {
4403 async_js('https://humblebundle-a.akamaihd.net/static/hashed/998cdf8d471fa4ae7935c0bc267cae547fa8826e.js', pubnub_async_loader);
4404}
4405</script>
4406
4407
4408<div id='flash'></div>
4409
4410 <script>
4411 $(window).ready(function() {
4412 //
4413 var urls = [
4414 'https://connect.facebook.net/en_US/all.js',
4415 'https://apis.google.com/js/platform.js',
4416 'https://platform.twitter.com/widgets.js'
4417 ];
4418 _(urls).each(function(url) {
4419 async_js(url);
4420 });
4421 });
4422</script>
4423
4424 <script id="js-google-analytics">
4425 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4426 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
4427 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
4428 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
4429 ga('create', 'UA-467050-6', 'auto');
4430 ga('require', 'displayfeatures');
4431 ga('require', 'ecommerce');
4432 ga('require', 'linkid', 'linkid.js');
4433
4434 function _hbga(verb){
4435 ga.apply(this, arguments);
4436 }
4437 _hbga('set', 'metric1', 14.62);
4438 _hbga('set', 'dimension1', 14.62);
4439
4440 _hbga('send', 'pageview');
4441</script>
4442<script>
4443 function _gaTrackEvent(category, action, opt_label, opt_value, opts) {
4444 category = category || ('/' + window.location.pathname.split('/')[1]);
4445 _hbga('send', 'event', category, action, opt_label, opt_value, opts);
4446 }
4447 function _gaTrackPageview(page) {
4448 _hbga('send', 'pageview', page);
4449 }
4450 function _gaTrackEventNoninteractive(category, action, opt_label, opt_value) {
4451 _gaTrackEvent(category, action, opt_label, opt_value, {'nonInteraction': 1})
4452 }
4453</script>
4454
4455
4456<!-- Facebook Pixel Code -->
4457<script>
4458 !function(f,b,e,v,n,t,s)
4459 {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
4460 n.callMethod.apply(n,arguments):n.queue.push(arguments)};
4461 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
4462 n.queue=[];t=b.createElement(e);t.async=!0;
4463 t.src=v;s=b.getElementsByTagName(e)[0];
4464 s.parentNode.insertBefore(t,s)}(window,document,'script',
4465 'https://connect.facebook.net/en_US/fbevents.js');
4466 fbq('init', '1658430177760250');
4467 fbq('track', 'PageView');
4468</script>
4469<noscript>
4470 <img height="1" width="1" src="https://www.facebook.com/tr?id=1658430177760250&ev=PageView&noscript=1"/>
4471</noscript>
4472<!-- End Facebook Pixel Code -->
4473
4474
4475 <script async src='https://checkout.stripe.com/checkout.js'></script>
4476 <script>
4477 var _user_id = "1JMmJVX1yO8aHixHXsStAsuN2GtFvBqE4w5E7vPFdvt6mZVeH8FglBAn0NUBBA9kLx";
4478var _session_id = "qXAZhsnXXi";
4479
4480var _sift = _sift || [];
4481_sift.push(['_setAccount', 'fa5602386c']);
4482_sift.push(['_setUserId', _user_id]);
4483_sift.push(['_setSessionId', _session_id]);
4484_sift.push(['_trackPageview']);
4485(function () {
4486 function ls() {
4487 var e = document.createElement('script');
4488 e.type = 'text/javascript';
4489 e.async = true;
4490 e.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.siftscience.com/s.js';
4491 var s = document.getElementsByTagName('script')[0];
4492 s.parentNode.insertBefore(e, s);
4493 }
4494
4495 if (window.attachEvent) {
4496 window.attachEvent('onload', ls);
4497 } else {
4498 window.addEventListener('load', ls, false);
4499 }
4500})();
4501 </script>
4502
4503 <script type="text/javascript">
4504 (function(s,m,y,t,e){s._smyte=s._smyte||[];t=m.createElement(y);t.async=1;t.src='//ping.smyte.com/p.js';e=m.getElementsByTagName(y)[0];e.parentNode.insertBefore(t,e);})(window,document,'script');
4505 _smyte.push(['_setClientKey', '90d681dbb6997b4dfd2be21919378c00']);
4506 _smyte.push(['_setSession', {
4507 id: 'qXAZhsnXXi',
4508 actor: {
4509
4510 id: '1JMmJVX1yO8aHixHXsStAsuN2GtFvBqE4w5E7vPFdvt6mZVeH8FglBAn0NUBBA9kLx',
4511
4512 type: 'user'
4513 }
4514 }]);
4515 _smyte.push(['_log']);
4516</script>
4517 <script>
4518
4519//timer
4520
4521(function(){
4522 var TIMER_FREQUENCY = 500;
4523
4524 var drawsimpleclock = function(t, $element) {
4525 for (var i=0;i<t.length;i++) {
4526 var d = '' + Math.floor(t[i]);
4527 if (d.length == 1) d = '0' + d;
4528 $element.find('.digit.' + i).text(d);
4529 }
4530 };
4531
4532 var drawclock = function(t, $element) {
4533 for (var i=0;i<t.length;i++) {
4534 var d = '' + Math.floor(t[i]);
4535 if (d.length == 1) d = '0' + d;
4536 for (var j=0;j<2;j++) {
4537 $element.find('.c' + (2*i + j)).find('.top-cutter .heading-num').text(d.substr(j,1));
4538 }
4539 }
4540 };
4541
4542 var count = function(d, element) {
4543 var s = Math.max((new Date(d - new Date())).valueOf(),0),
4544 digits = $.map([s / 86400000,s / 3600000 % 24,s / 60000 % 60,s / 1000 % 60],function(a) {return parseInt(a);}),
4545 $el = $(element);
4546 if ($el.hasClass('simple-timer')) {
4547 drawsimpleclock(digits, $el);
4548 } else {
4549 drawclock(digits, $el);
4550 }
4551 };
4552
4553 var timers = [];
4554 var timerIntervals = [];
4555
4556 window.start_countdown_timer = function(d, element){
4557 var timer_callback = function(){
4558 count(d, element);
4559 };
4560 timers.push(timer_callback);
4561 timerIntervals.push(setInterval(timer_callback, TIMER_FREQUENCY));
4562 timer_callback();
4563 };
4564
4565 window.start_countdown_timers = function() {
4566 $('.js-countdown-timer').each(function(i, el) {
4567 var $el = $(el);
4568 var end_time = $el.data('end-time');
4569 var timer = function() {
4570 $el.text(render_time_remaining_until(end_time));
4571 };
4572
4573 timers.push(timer);
4574 timerIntervals.push(setInterval(timer, TIMER_FREQUENCY));
4575 });
4576 };
4577
4578 window.pause_timers = function(){
4579 for(var i = timerIntervals.length - 1; i >= 0; i--){
4580 clearInterval(timerIntervals.pop());
4581 }
4582 }
4583
4584 window.resume_timers = function(){
4585 for(var i = 0; i < timers.length; i++){
4586 timerIntervals.push(setInterval(timers[i], TIMER_FREQUENCY));
4587 }
4588 }
4589
4590})();
4591
4592var timing = {};
4593
4594var enddate = new Date(timing.end * 1000);
4595start_countdown_timer(enddate, 'heading-time-remaining');
4596
4597
4598
4599/* popups.js */
4600
4601(function() {
4602 if ($('div.youtube-embed, div.youtube-embed-forceload').length > 0) {
4603 // 2. This code loads the IFrame Player API code asynchronously.
4604 async_js('//www.youtube.com/player_api');
4605 }
4606
4607 function onPlayerStateChange(e) {
4608 if (e.data == YT.PlayerState.PLAYING) {
4609 // For now, just fire a coarse-grained global notification whenever a
4610 // video starts playing. This should be cleaned up to fire a more specific
4611 // notification.
4612 $(window).trigger('youtube-play');
4613 }
4614 }
4615
4616 window.players = [];
4617 function activateEmbeddedPlayer($elem) {
4618 if (typeof YT === 'undefined') {
4619 return;
4620 }
4621 var data = $elem.data();
4622 if (!('playerVars' in data)) {
4623 // each video must have a unique id -- randomly generate one here
4624 var random_id = 'yt-' + Math.random().toString(36).substr(2, 5);
4625 $elem.attr('id', random_id);
4626 data.playerVars = {};
4627 for (var i in data) {
4628 if (data.hasOwnProperty(i) && i.indexOf('playervar') === 0) {
4629 data.playerVars[i.substring(9).toLowerCase()] = data[i];
4630 delete data[i];
4631 }
4632 }
4633 data.events = {
4634 'onStateChange': onPlayerStateChange
4635 };
4636 var player = new YT.Player($elem.attr('id'), data);
4637 // Set the index data on the iframe
4638 $(player.getIframe()).data('index', window.players.length);
4639 window.players.push(player);
4640 }
4641 }
4642
4643 // make clicking a product icon show the popup
4644 $('a.gamelinks, a.gamelinks-nostyle, a.minigame-link, .charitylinks a, .soundlink, .popup-links a').click(function(e) {
4645 var popupHash = $(this).attr('href'); // action
4646 if (popupHash.indexOf('#popup-') >= 0) {
4647 e.preventDefault();
4648 popupHash = popupHash.substr(popupHash.indexOf('#'));
4649 } else {
4650 return; // the href should always start with #popup-
4651 }
4652
4653 var $popup = $(popupHash);
4654 if ($popup.length === 0) {
4655 return;
4656 } else {
4657 // Setting overflow-y: hidden will hide the scroll bar, which changes the
4658 // width, which causes the content to shift. To counteract this effect, add
4659 // a margin-right where the scroll bar used to be.
4660 var old_width = $('body').width();
4661 $('body').css('overflow-y', 'hidden');
4662 var new_width = $('body').width();
4663 $('body').css('margin-right', new_width - old_width);
4664 $popup.show().addClass('active-popup');
4665 $('#dark-cover-inner').css('min-height', $popup.outerHeight());
4666
4667 $popup.find('div.youtube-embed').each(function() {
4668 var $elem = $(this);
4669 activateEmbeddedPlayer($elem);
4670 });
4671 }
4672 $('#dark-cover').fadeIn('fast');
4673
4674
4675 var productName = $('#contribute').find('input[name=product]').val();
4676 _gaTrackEvent(undefined, 'Popup action: ' + popupHash, 'Product: ' + productName);
4677
4678 });
4679
4680 function closePopup() {
4681 var $videoFrame = $('.active-popup .game-movie iframe');
4682 var $activePopup = $('.active-popup');
4683 if ($activePopup.data('closeCallback')) {
4684 $activePopup.data('closeCallback')($activePopup);
4685 }
4686 $activePopup.hide().removeClass('active-popup');
4687 $('#dark-cover').fadeOut('fast');
4688 $('body').css('overflow-y', 'auto');
4689 $('body').css('margin-right', '0');
4690 if (!$videoFrame.length) {
4691 return;
4692 }
4693 // stop playing by removing the iframe
4694 var $frameParent = $videoFrame.parent(),
4695 $frameClone = $videoFrame.clone();
4696 $videoFrame.remove();
4697 $frameClone.appendTo($frameParent);
4698 }
4699
4700 // Close the popup if the user presses escape.
4701 $(document).keyup(function(e) {
4702 if (e.keyCode == 27) {
4703 closePopup();
4704 }
4705 });
4706 // Close the popup when the user clicks the close button or clicks outside the popup.
4707 $('#dark-cover,.game-popup .close-popup').click(function(e) {
4708 e.preventDefault();
4709 closePopup();
4710 });
4711 // ...but make sure clicking inside the popup doesn't close it.
4712 $('.game-popup').click(function(e) {
4713 e.stopPropagation();
4714 });
4715
4716 $(window).on('onYouTubeIframeAPIReady', function() {
4717 // Only load forceloaded embeds. Other embeds will be loaded when their containing popup is opened.
4718 $('div.youtube-embed-forceload').each(function() {
4719 var $elem = $(this);
4720 activateEmbeddedPlayer($elem);
4721 });
4722 });
4723
4724 /*
4725 * eBook preview font controls.
4726 */
4727 $(document).ready(function () {
4728 var font_size = 14;
4729
4730 $('.font-size .larger').click(function(e) {
4731 e.preventDefault();
4732 font_size += 2;
4733 $('.book-preview').css('font-size', font_size + 'px');
4734 });
4735 $('.font-size .smaller').click(function(e) {
4736 e.preventDefault();
4737 font_size -= 2;
4738 $('.book-preview').css('font-size', font_size + 'px');
4739 });
4740 $('.font-style .sans').click(function(e) {
4741 e.preventDefault();
4742 $('.ebook-popup').addClass('sans');
4743 });
4744 $('.font-style .serif').click(function(e) {
4745 e.preventDefault();
4746 $('.ebook-popup').removeClass('sans');
4747 });
4748 });
4749
4750 /*
4751 * Subtab navigation
4752 */
4753 $('#active-subtab').click(function (e) {
4754 e.preventDefault();
4755 var target = $(this).attr('href');
4756 $('body').animate({'scrollTop': $(target).offset().top}, 800);
4757 });
4758})();
4759
4760$('.steaminfo').click(function(e) {
4761 e.preventDefault();
4762 $('#keysinfotext').toggleClass('displaying');
4763});
4764
4765/* show grayscale pie chart on hover for colorblind users */
4766var $chartLegendColors = $('#chartlegend').find('.chartcolor');
4767$('#chartgloss').hover(function() {
4768 $('#googlechart').attr('src', $('#googlechart').data('grayscalesrc'));
4769 $chartLegendColors.each(function() {
4770 $(this).css('background-color', $(this).data('grayscaleColor'));
4771 });
4772},function() {
4773 $('#googlechart').attr('src', $('#googlechart').data('colorsrc'));
4774 $chartLegendColors.each(function() {
4775 $(this).css('background-color', $(this).data('color'));
4776 });
4777});
4778$chartLegendColors.each(function() {
4779 $(this).data('color', $(this).css('background-color'));
4780});
4781
4782
4783$(document).ready(function() {
4784 var cookiedata = $.cookie('androidapp');
4785 if (cookiedata == 'expanded') {
4786 $('#androidappbox').click();
4787 }
4788 $('#androidappbox').click(function(e) {
4789 $.cookie('androidapp', 'expanded');
4790 });
4791});
4792
4793</script>
4794
4795 <script>
4796 var active_platform = "ebook";
4797var humbleIcon = "https://humblebundle-a.akamaihd.net/static/hashed/703cddaea1919f4b3840a4527dbbd0a0c4dc160c.png";
4798
4799
4800var gamekeys = ['wWuG2hMxeynmcRrC'];
4801var single_key_page = true;
4802var android_version = false;
4803
4804var hasAdminAccess = false;
4805
4806require([
4807 'downloadPages/initDownloadList',
4808 'banner/banner'
4809], function (
4810 initDownloadList,
4811 XPromoBanner
4812) {
4813
4814 initDownloadList(gamekeys, {
4815 el: $('.js-gamelist-holder'),
4816 activePlatform: active_platform,
4817 singleKeyPage: single_key_page,
4818 androidVersion: android_version,
4819 humbleIcon: humbleIcon,
4820 hasAdminAccess: hasAdminAccess
4821 });
4822 XPromoBanner.init();
4823});
4824
4825var runanalytics = function() {
4826 var analyze = function(id) {
4827 if (!id) return;
4828 var storage = getLocalStorage();
4829 var previds = storage.getItem('hbprevids') || '';
4830 if (previds.match(id)) return;
4831
4832 $.post('/analytics', {'id':id}, function(data) {
4833 var gaData;
4834
4835 if (data.complete) {
4836 storage.setItem('hbprevids', previds + ',' + id);
4837 }
4838
4839 if (!data.uid) {
4840 return;
4841 }
4842
4843 gaData = {
4844 id: data.uid,
4845 revenue: data.amount
4846 };
4847 ga('ecommerce:addTransaction', gaData);
4848 ga('send', {
4849 hitType: 'event',
4850 eventCategory: 'Purchase',
4851 eventAction: data.category,
4852 eventLabel: data.product,
4853 eventValue: data.pennies
4854 });
4855 for (var i = 0; i < data.items.length; i++) {
4856 var item = data.items[i];
4857
4858 gaData = {
4859 id: data.uid,
4860 name: item.kind,
4861 sku: data.product,
4862 category: item.kind,
4863 price: item.amount,
4864 quantity: '1'
4865 };
4866 ga('ecommerce:addItem', gaData);
4867 }
4868
4869 ga('ecommerce:send');
4870 },'json');
4871 };
4872
4873
4874 analyze('wWuG2hMxeynmcRrC');
4875
4876 var partnerId = $.cookie('partner_id');
4877 if (partnerId) {
4878 ga('set', 'dimension2', partnerId);
4879 }
4880};
4881runanalytics();
4882
4883/*
4884 * TypeWatch 2.0 - Original by Denny Ferrassoli / Refactored by Charles Christolini
4885 *
4886 * Examples/Docs: www.dennydotnet.com
4887 *
4888 * Copyright(c) 2007 Denny Ferrassoli - DennyDotNet.com
4889 * Coprright(c) 2008 Charles Christolini - BinaryPie.com
4890 *
4891 * Dual licensed under the MIT and GPL licenses:
4892 * http://www.opensource.org/licenses/mit-license.php
4893 * http://www.gnu.org/licenses/gpl.html
4894 */
4895
4896(function(jQuery) {
4897 jQuery.fn.typeWatch = function(o) {
4898 // Options
4899 var options = jQuery.extend({
4900 wait : 750,
4901 callback : function() {
4902 },
4903 highlight : true,
4904 captureLength : 2
4905 }, o);
4906
4907 function checkElement(timer, override) {
4908 var elTxt = jQuery(timer.el).val();
4909
4910 // Fire if text > options.captureLength AND text != saved txt OR if override AND text > options.captureLength
4911 if ((elTxt.length > options.captureLength && elTxt.toUpperCase() != timer.text)
4912 || (override && elTxt.length > options.captureLength)) {
4913 timer.text = elTxt.toUpperCase();
4914 timer.cb(elTxt);
4915 }
4916 };
4917
4918 function watchElement(elem) {
4919 // Must be text or textarea
4920 if (elem.type.toUpperCase() == "TEXT" || elem.nodeName.toUpperCase() == "TEXTAREA") {
4921
4922 // Allocate timer element
4923 var timer = {
4924 timer : null,
4925 text : jQuery(elem).val().toUpperCase(),
4926 cb : options.callback,
4927 el : elem,
4928 wait : options.wait
4929 };
4930
4931 // Set focus action (highlight)
4932 if (options.highlight) {
4933 jQuery(elem).focus(
4934 function() {
4935 this.select();
4936 });
4937 }
4938
4939 // Key watcher / clear and reset the timer
4940 var startWatch = function(evt) {
4941 var timerWait = timer.wait;
4942 var overrideBool = false;
4943
4944 if (evt.keyCode == 13 && this.type.toUpperCase() == "TEXT") {
4945 timerWait = 1;
4946 overrideBool = true;
4947 }
4948
4949 var timerCallbackFx = function() {
4950 checkElement(timer, overrideBool)
4951 }
4952
4953 // Clear timer
4954 clearTimeout(timer.timer);
4955 timer.timer = setTimeout(timerCallbackFx, timerWait);
4956
4957 };
4958
4959 jQuery(elem).keydown(startWatch);
4960 // HTML5 adds an "input" event which is a more reliable way of telling
4961 // when the field has changed -- it fires for things like browser
4962 // autofill (where there is no keydown event). For browsers that support
4963 // it, we bind startWatch to fire here too.
4964 jQuery(elem).bind('input', startWatch);
4965 }
4966 }
4967
4968 ;
4969
4970 // Watch Each Element
4971 return this.each(function(index) {
4972 watchElement(this);
4973 });
4974
4975 };
4976
4977})(jQuery);
4978var MAILCHECK_DOMAINS = ['gmail.com', 'hotmail.com', 'yahoo.com', 'hotmail.co.uk', 'googlemail.com', 'gmx.de', 'live.com', 'live.ca', 'web.de', 'aol.com', 'msn.com', 'comcast.net', 'me.com', 'gmx.net', 'hotmail.fr', 'mail.ru', 'yahoo.co.uk', 'live.co.uk', 'yandex.ru', 'mac.com', 'yahoo.de', 'yahoo.fr'];
4979
4980
4981
4982function isValidEmail(e) {
4983 return (e != '') && /.+@.+\..+/.test(e);
4984}
4985
4986function live_email_check($field, setEmailMessage) {
4987 var emailValid = false;
4988 $field.mailcheck({
4989 domains: MAILCHECK_DOMAINS,
4990 suggested: function($input, suggestion) {
4991 // set the error text to the suggested correction
4992 var message = 'Did you mean <a href="#" class="suggested-email" data-email="' + suggestion['full'] + '">' + suggestion['address'] + '@<strong>' + suggestion['domain'] + '</strong></a>?'
4993 var $msgField = setEmailMessage($field, message);
4994 $msgField.find('.suggested-email').click(function(e) {
4995 e.preventDefault();
4996 $input.val($(this).data('email'));
4997 live_email_check($field, setEmailMessage, false);
4998 });
4999 emailValid = true;
5000 },
5001 empty: function($input) {
5002 // no suggested domain correction, check if the email address looks valid
5003 var email = $input.val();
5004 emailValid = isValidEmail(email);
5005 if (emailValid) {
5006 setEmailMessage($field, false);
5007 } else {
5008 setEmailMessage($field, 'Email address is not valid', true);
5009 }
5010 }
5011 });
5012 return emailValid;
5013}
5014// this method will set up email "validation" and error correction.
5015// Parameters:
5016// $field is the input field to bind to
5017// setEmailMessage is a function that takes the input field the error is related to and a message to set.
5018// It sets the message then returns the error holder.
5019function bindEmailField($field, setEmailMessage){
5020 function bound_live_email_check () {
5021 live_email_check($field, setEmailMessage);
5022 }
5023 $field.typeWatch({
5024 callback: bound_live_email_check,
5025 captureLength: -1,
5026 highlight: false,
5027 wait: 500
5028 });
5029}
5030var flash = $('#flash');
5031
5032function show_flash(message){
5033 flash.text(message)
5034 flash.show();
5035
5036 setTimeout(function() {
5037 flash.fadeOut();
5038 },5000);
5039}
5040
5041function set_flash(message) {
5042 $.cookie('hbflash', message, {path: '/'});
5043}
5044
5045$(function(){
5046 function show_flash(message){
5047 flash.text(message)
5048 flash.show();
5049
5050 setTimeout(function() {
5051 flash.fadeOut();
5052 },5000);
5053 }
5054
5055 var flashmessage = $.cookie('hbflash');
5056 if (flashmessage == 'None') {
5057 flashmessage = '';
5058 }
5059
5060 if (flashmessage) {
5061 show_flash(flashmessage);
5062 $.cookie('hbflash', 'None', {path: '/'});
5063 }
5064
5065 flash.click(function(){
5066 flash.fadeOut();
5067 });
5068});
5069// When CSS4 is widely-supported by all the modern browsers, detecting touch support may not be necessary depending on the usage of the touch.
5070$(function(){
5071 // Class assignment can be used for touch screen problems. Such as :hover.
5072 if ('ontouchstart' in window) {
5073 $('body').addClass('touch-support');
5074 }
5075});
5076require([
5077 'lib/require-domReady',
5078 'search/search',
5079 'lib/algolia'
5080], function(domReady, SiteSearchView, algoliasearch) {
5081 var public_key ='AYSZEWDAZ2';
5082 var search_key ='e287f1da94f143ba1c4a5ec357135623';
5083 var index_name ='slave_product_query_site_search';
5084 var algolia_client = algoliasearch(public_key, search_key).initIndex(index_name);
5085 var options = {
5086 'pricing_constants': {
5087 'current_country': "DE",
5088 'currencies': ["USD", "EUR", "GBP"],
5089 'exchange_rates': {"USD": 1.0, "IDR": 13493.003905586687, "BGN": 1.6605535744608593, "ILS": 3.5215656308371539, "GBP": 0.74405671591102052, "DKK": 6.3170317541178465, "CAD": 1.2467311937510612, "JPY": 112.54881983358804, "HUF": 264.10256410256409, "RON": 3.9058413992188825, "MYR": 4.2315333672949569, "SEK": 8.1338087960604515, "SGD": 1.359313975208015, "HKD": 7.8092205807437596, "AUD": 1.2781456953642385, "CHF": 0.97300050942435046, "KRW": 1146.3321446765156, "CNY": 6.6595347257598911, "TRY": 3.5654610290371878, "HRK": 6.3656817795890648, "NZD": 1.3892851078281543, "THB": 33.390219052470705, "EUR": 0.84904058413992189, "NOK": 7.9448972660893187, "RUB": 58.062064866700631, "INR": 65.47376464595007, "MXN": 18.165732722024114, "CZK": 22.109865851587706, "BRL": 3.182543725590083, "PLN": 3.661232806928171, "PHP": 50.940736967227032, "ZAR": 13.515792154865002},
5090 'euro_countries': ["BE", "FR", "BG", "DK", "HR", "DE", "HU", "FI", "BA", "NL", "PT", "RS", "LI", "LV", "LT", "LU", "RO", "PL", "VA", "CH", "GR", "EE", "IT", "AL", "CZ", "CY", "AT", "AD", "IE", "ES", "ME", "EUROPE_EURO", "MC", "NO", "MK", "SK", "MT", "SI", "SM", "SE"],
5091 'gbp_countries': ["GS", "GG", "SH", "IM", "GB", "UK", "JE", "EUROPE_GBP", "BQ"]
5092 },
5093 'bundle_icon': "https://humblebundle-a.akamaihd.net/static/hashed/40f0b827c9d1c12cfc3dfd358ec39cc34e5dd3a7.jpg",
5094 'monthly_icon': "https://humblebundle-a.akamaihd.net/static/hashed/ac7ab70a9a2116ba9fae8feead3ba35fe1c609f5.jpg",
5095 'algolia_client': algolia_client
5096 };
5097 domReady(function() {
5098 var searchBars = $('.site-minisearch-view');
5099 for (var idx = 0; idx < searchBars.length; idx++) {
5100 options.$el = $(searchBars[idx]);
5101 new SiteSearchView(options);
5102 }
5103 });
5104});
5105$(document).ready(function() {
5106 var Dropdown = (function() {
5107 function Dropdown(options) {
5108 var that = this;
5109
5110 this.el = {
5111 $toggle: options.toggleEl,
5112 $container: options.containerEl
5113 };
5114
5115 this.events = {
5116 toggleClick: function(event) {
5117 event.stopPropagation();
5118 event.preventDefault();
5119 that.toggleState();
5120 that.render();
5121 if (that.visible) {
5122 return that.bindToDocument();
5123 } else {
5124 return that.unbindToDocument();
5125 }
5126 },
5127 hide: function() {
5128 that.visible = false;
5129 that.render();
5130 return that.unbindToDocument();
5131 }
5132 };
5133
5134 if (_.has(options, 'visible')) {
5135 this.visible = options.visible;
5136 } else {
5137 this.visible = true;
5138 }
5139 if (options.hiddenClass) {
5140 this.hiddenClass = options.hiddenClass;
5141 } else {
5142 this.hiddenClass = 'is-hidden';
5143 }
5144 this.validateOptions().bind().render();
5145 }
5146
5147 Dropdown.prototype.validateOptions = function() {
5148 var messages;
5149 messages = {
5150 toggleNotFound: 'Toggle element not found',
5151 containerNotFound: 'Container element not found'
5152 };
5153 if (!this.el.$toggle.length) {
5154 throw new Error(messages.toggleNotFound);
5155 }
5156 if (!this.el.$container.length) {
5157 throw new Error(messages.containerNotFound);
5158 }
5159 return this;
5160 };
5161
5162 Dropdown.prototype.remove = function() {
5163 this.unbind();
5164 delete this.el;
5165 delete this.events;
5166 return this;
5167 };
5168
5169
5170 // Ctrl: Event handling
5171 Dropdown.prototype.bind = function() {
5172 this.el.$toggle.on('click', this.events.toggleClick);
5173 return this;
5174 };
5175
5176 Dropdown.prototype.unbind = function() {
5177 this.el.$toggle.off('click', this.events.toggleClick);
5178 return this;
5179 };
5180
5181 Dropdown.prototype.bindToDocument = function() {
5182 $(document).on('click', this.events.hide);
5183 return this;
5184 };
5185
5186 Dropdown.prototype.unbindToDocument = function() {
5187 $(document).off('click', this.events.hide);
5188 return this;
5189 };
5190
5191 // Ctrl: State handling
5192 Dropdown.prototype.toggleState = function() {
5193 this.visible = !this.visible;
5194 return this;
5195 };
5196
5197
5198 // View: DOM manipulation
5199 Dropdown.prototype.render = function() {
5200 if (this.visible) {
5201 this.$show();
5202 } else {
5203 this.$hide();
5204 }
5205 return this;
5206 };
5207
5208 Dropdown.prototype.$hide = function() {
5209 if (!this.el.$container.hasClass(this.hiddenClass)) {
5210 this.el.$container.addClass(this.hiddenClass);
5211 }
5212 return this;
5213 };
5214
5215 Dropdown.prototype.$show = function() {
5216 if (this.el.$container.hasClass(this.hiddenClass)) {
5217 this.el.$container.removeClass(this.hiddenClass);
5218 }
5219 return this;
5220 };
5221
5222 return Dropdown;
5223
5224 })();
5225
5226 $('.navbar-item-dropdown-toggle').each(function() {
5227 var $toggle = $(this),
5228 d = new Dropdown({
5229 toggleEl: $toggle,
5230 containerEl: $toggle.siblings('.navbar-item-dropdown-container'),
5231 fadeTime: 200,
5232 visible: false
5233 })
5234 ;
5235 d.render();
5236 });
5237});
5238
5239
5240(function(){
5241 var TIMER_FREQUENCY = 500;
5242
5243 var drawsimpleclock = function(t, $element) {
5244 for (var i=0;i<t.length;i++) {
5245 var d = '' + Math.floor(t[i]);
5246 if (d.length == 1) d = '0' + d;
5247 $element.find('.digit.' + i).text(d);
5248 }
5249 };
5250
5251 var drawclock = function(t, $element) {
5252 for (var i=0;i<t.length;i++) {
5253 var d = '' + Math.floor(t[i]);
5254 if (d.length == 1) d = '0' + d;
5255 for (var j=0;j<2;j++) {
5256 $element.find('.c' + (2*i + j)).find('.top-cutter .heading-num').text(d.substr(j,1));
5257 }
5258 }
5259 };
5260
5261 var count = function(d, element) {
5262 var s = Math.max((new Date(d - new Date())).valueOf(),0),
5263 digits = $.map([s / 86400000,s / 3600000 % 24,s / 60000 % 60,s / 1000 % 60],function(a) {return parseInt(a);}),
5264 $el = $(element);
5265 if ($el.hasClass('simple-timer')) {
5266 drawsimpleclock(digits, $el);
5267 } else {
5268 drawclock(digits, $el);
5269 }
5270 };
5271
5272 var timers = [];
5273 var timerIntervals = [];
5274
5275 window.start_countdown_timer = function(d, element){
5276 var timer_callback = function(){
5277 count(d, element);
5278 };
5279 timers.push(timer_callback);
5280 timerIntervals.push(setInterval(timer_callback, TIMER_FREQUENCY));
5281 timer_callback();
5282 };
5283
5284 window.start_countdown_timers = function() {
5285 $('.js-countdown-timer').each(function(i, el) {
5286 var $el = $(el);
5287 var end_time = $el.data('end-time');
5288 var timer = function() {
5289 $el.text(render_time_remaining_until(end_time));
5290 };
5291
5292 timers.push(timer);
5293 timerIntervals.push(setInterval(timer, TIMER_FREQUENCY));
5294 });
5295 };
5296
5297 window.pause_timers = function(){
5298 for(var i = timerIntervals.length - 1; i >= 0; i--){
5299 clearInterval(timerIntervals.pop());
5300 }
5301 }
5302
5303 window.resume_timers = function(){
5304 for(var i = 0; i < timers.length; i++){
5305 timerIntervals.push(setInterval(timers[i], TIMER_FREQUENCY));
5306 }
5307 }
5308
5309})();
5310
5311$(function() {
5312 function start_timer (element) {
5313 var timing = $(element).data('timing');
5314 var enddate = new Date(timing.end * 1000);
5315 start_countdown_timer(enddate, element);
5316 };
5317
5318 var $timers = $('.tabbar .tabbar-timer, .tabs .tab-timer');
5319 $timers.each(function (i, el) {
5320 start_timer($(el));
5321 });
5322});
5323$(function () {
5324 var $emailForm = $('#ebook-email-form');
5325
5326 $emailForm.submit(function(e) {
5327 console.log($emailForm.attr('action'));
5328 e.preventDefault();
5329 $.post(
5330 $emailForm.attr('action'),
5331 $emailForm.serialize(),
5332 function(data) {
5333 console.log(data);
5334 data = $.parseJSON(data);
5335 if (!data.success) {
5336 $('#send-email-message').text('Error: ' + data.message).css('padding-top','10px').addClass('error');
5337 } else {
5338 $('#send-email-message').text(data.message).css('padding-top','10px').removeClass('error');
5339 }
5340 }
5341 );
5342 });
5343
5344 $('.js-slide-down-trigger').click(function (event) {
5345 event.preventDefault();
5346 $customInstruct = $(event.target);
5347 $customInstruct.siblings('.slide-down').slideToggle();
5348 });
5349});
5350 </script>
5351
5352
5353 </div><!--[if lte IE 9]><style>.site-footer-col, .site-footer-cols, .site-footer-social-widget-list { display: inline-block; }
5354.site-footer-col section, .site-footer-cols section, .site-footer-social-widget-list section, .site-footer-col div, .site-footer-cols div, .site-footer-social-widget-list div, .site-footer-col .site-footer-social-widget-list-item, .site-footer-cols .site-footer-social-widget-list-item, .site-footer-social-widget-list .site-footer-social-widget-list-item { display: inline-block; }
5355
5356.site-footer { text-align: center; }</style><![endif]-->
5357<div class="site-footer-padding"></div>
5358<footer class="site-footer-container">
5359 <div class="site-footer">
5360 <nav class="site-footer-cols">
5361 <div class="site-footer-col site-footer-col-links">
5362 <section>
5363 <ul class="site-footer-list">
5364 <li class="site-footer-list-item">
5365 <a href="http://blog.humblebundle.com" target="_blank">
5366 Blog
5367 </a>
5368 </li>
5369 <li class="site-footer-list-item">
5370 <a href="/charities" target="_blank">
5371 Charities
5372 </a>
5373 </li>
5374 <li class="site-footer-list-item">
5375 <a href="https://jobs.humblebundle.com" target="_blank">
5376 Careers
5377 </a>
5378 </li>
5379 </ul>
5380 </section>
5381 <section>
5382 <ul class="site-footer-list">
5383 <li class="site-footer-list-item">
5384 <a href="https://support.humblebundle.com" target="_blank">
5385 Support
5386 </a>
5387 </li>
5388 <li class="site-footer-list-item">
5389 <a href="/resender" target="_blank">
5390 Order Resender
5391 </a>
5392 </li>
5393 <li class="site-footer-list-item">
5394 <a href="/developer" target="_blank">
5395 Developer
5396 </a>
5397 </li>
5398 </ul>
5399 </section>
5400 <section>
5401 <ul class="site-footer-list">
5402 <li class="site-footer-list-item">
5403 <a href="/terms" target="_blank">
5404 Terms of Service
5405 </a>
5406 </li>
5407 <li class="site-footer-list-item">
5408 <a href="/privacy" target="_blank">
5409 Privacy Policy
5410 </a>
5411 </li>
5412 <li class="site-footer-list-item">
5413 <a href="/publishing" target="_blank">
5414 Publishing
5415 </a>
5416 </li>
5417 </ul>
5418 </section>
5419 </div>
5420
5421 <div class="site-footer-col site-footer-col-social">
5422 <ul class="site-footer-social-widget-list">
5423 <li class="site-footer-social-widget-list-item">
5424 <a href="https://www.facebook.com/humblebundle" target="_blank">Facebook</a>
5425 <div class="site-footer-facebook-widget">
5426 <div id="fb-root"></div>
5427 <fb:like href="https://www.facebook.com/humblebundle" send="false" layout="button_count" width="90" show_faces="false" font="arial"></fb:like>
5428 </div>
5429 </li>
5430 <li class="site-footer-social-widget-list-item">
5431 <a href="https://twitter.com/humble" target="_blank">Twitter</a>
5432 <div class="site-footer-twitter-widget">
5433 <a href="https://twitter.com/humble" class="twitter-follow-button"
5434 data-show-count="true" data-show-screen-name="false"
5435 data-width="150px">Follow</a>
5436 </div>
5437 </li>
5438 <li class="site-footer-social-widget-list-item">
5439 <a href="https://plus.google.com/+HumbleBundle" target="_blank">Google+</a>
5440 <div class="site-footer-gplus-widget">
5441 <div class="g-follow" data-annotation="bubble" data-height="20" data-href="https://plus.google.com/+HumbleBundle" data-rel="author"></div>
5442 </div>
5443 </li>
5444 </ul>
5445 </div>
5446 </nav>
5447 </div>
5448</footer><!-- /.site-footer --></body>
5449</html>