├── .gitignore
├── README.md
├── data
├── fm.json
├── miserables.json
└── ramzaneh.json
├── index.html
└── static
├── css
├── base.css
├── bootstrap.css
└── styles.css
├── js
├── d3.js
├── g2j4d3.js
├── graphSub.js
└── underscore-min.js
└── tests
└── graphSubTests.html
/.gitignore:
--------------------------------------------------------------------------------
1 | /temp
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | _ ____ _
3 | __ _ _ __ __ _ _ __ | |__ / ___| _ _| |__
4 | / _` | '__/ _` | '_ \| '_ \\___ \| | | | '_ \
5 | | (_| | | | (_| | |_) | | | |___) | |_| | |_) |
6 | \__, |_| \__,_| .__/|_| |_|____/ \__,_|_.__/
7 | |___/ |_|
8 |
9 |
10 |
11 | graphSub is a re-usable force directed chart for displaying connected data. Written in Javascript with the [d3js](http://d3js.org) library. It has some cool features rolled in.
12 |
13 | ### Featues include:
14 | * Display graph subsets. Given a data-set with 1000+ nodes, displaying all nodes at once can clutter your screen. With graphSub you can display only a subset of your data-set whilst being able to navigate through the entire data-set with mouse clicks.
15 | * The search box feature allows you to quickly locate the node that you are interested in.
16 | * None over-lapping labels means that node labels do not obscure each other.
17 | * Works on touch screens.
18 | * The responsive chart resizes upon a browser resize.
19 | * The code uses an MVC architecture, making future development easier to manage.
20 | * More features to be added....
21 |
22 | ### Instructions:
23 |
24 | The following code can be found at the end of static/js/graphsub.js please modify it to suit your needs.
25 | Your data must follow the format given in the example data-set. This can be found in /data/miserables.json
26 | More information on d3s' force layouts can be found [here](https://github.com/mbostock/d3/wiki/Force-Layout#force).
27 |
28 |
29 | /*----------------------------------------------------------------------------`
30 | The code example below:
31 | 1. Loads the JSON data.
32 | 2. Sets the width to 760px.
33 | 3. Set the height to 500px.
34 | 4. Displays all nodes within 2 hops of the selected node.
35 | 5. Attaches the chart to the DOM element with id #chart
36 | */
37 |
38 | d3.json("data/miserables.json", function(error, graph) {
39 | if (error) throw error;
40 |
41 | // Parse JSON into the correct format if needed
42 |
43 | var chart = d3.graphSub()
44 | .width(760)
45 | .height(500)
46 | .hops(2);
47 |
48 | d3.select("#chart")
49 | .datum(graph)
50 | .call(chart);
51 | });
52 |
53 | Want to contribute a bug fix or enhancement; then feel free to clone the repository and make a pull request.
54 |
55 | ****A working example can be seen by downloading the repo and opening index.html****
56 |
57 | Example bl.ock.s used in the development of this graph:
58 |
59 | [Simple example of reusable d3 plugin](http://bl.ocks.org/cpbotha/5073718)
60 |
61 | [Force-based label placement](http://bl.ocks.org/MoritzStefaner/1377729)
62 |
63 | [Force-Directed Graph](http://bl.ocks.org/mbostock/4062045)
64 |
65 | [General Update Pattern, I](http://bl.ocks.org/mbostock/3808218)
66 |
67 | [General Update Pattern, II](http://bl.ocks.org/mbostock/3808221)
68 |
69 | [General Update Pattern, III](http://bl.ocks.org/mbostock/3808234)
70 |
71 | [Animating Changes in Force Diagram](http://bl.ocks.org/ericcoopey/6c602d7cb14b25c179a4)
72 |
--------------------------------------------------------------------------------
/data/fm.json:
--------------------------------------------------------------------------------
1 | {
2 | "nodes":[
3 | {"name":"a-asdasdasd", "group":1},
4 | {"name":"b-dfgdfgdfg", "group":2},
5 | {"name":"c-hjfghjfgj", "group":3},
6 | {"name":"d-sthdfhdfg", "group":4},
7 | {"name":"e-vbncvbvcb", "group":5},
8 | {"name":"f-qwerqwere", "group":6},
9 | {"name":"g-xfgxfgdff", "group":7},
10 | {"name":"h-sdfghdfhd", "group":1},
11 | {"name":"i-arsargfas", "group":2},
12 | {"name":"j-hdgfhdgfh", "group":3},
13 | {"name":"k-asefasdfd", "group":4},
14 | {"name":"l-sthsdhgsd", "group":5},
15 | {"name":"m-awsefraea", "group":6},
16 | {"name":"n-rtyhrthyt", "group":7}
17 | ],
18 | "links":[
19 | {"source":0,"target":1,"value":1},
20 | {"source":0,"target":5,"value":1},
21 | {"source":0,"target":6,"value":1},
22 | {"source":0,"target":7,"value":1},
23 | {"source":1,"target":5,"value":1},
24 | {"source":1,"target":6,"value":1},
25 | {"source":1,"target":7,"value":1},
26 | {"source":2,"target":3,"value":1},
27 | {"source":4,"target":5,"value":1},
28 | {"source":7,"target":8,"value":1},
29 | {"source":9,"target":10,"value":1},
30 | {"source":11,"target":12,"value":1},
31 | {"source":2,"target":8,"value":1},
32 | {"source":2,"target":9,"value":1},
33 | {"source":3,"target":8,"value":1},
34 | {"source":3,"target":9,"value":1},
35 | {"source":4,"target":11,"value":1},
36 | {"source":5,"target":11,"value":1},
37 | {"source":9,"target":12,"value":1},
38 | {"source":10,"target":12,"value":1},
39 | {"source":11,"target":13,"value":1},
40 | {"source":12,"target":13,"value":1}
41 | ]
42 | }
--------------------------------------------------------------------------------
/data/miserables.json:
--------------------------------------------------------------------------------
1 | {
2 | "nodes":[
3 | {"name":"Myriel","group":1},
4 | {"name":"Napoleon","group":1},
5 | {"name":"Mlle.Baptistine","group":1},
6 | {"name":"Mme.Magloire","group":1},
7 | {"name":"CountessdeLo","group":1},
8 | {"name":"Geborand","group":1},
9 | {"name":"Champtercier","group":1},
10 | {"name":"Cravatte","group":1},
11 | {"name":"Count","group":1},
12 | {"name":"OldMan","group":1},
13 | {"name":"Labarre","group":2},
14 | {"name":"Valjean","group":2},
15 | {"name":"Marguerite","group":3},
16 | {"name":"Mme.deR","group":2},
17 | {"name":"Isabeau","group":2},
18 | {"name":"Gervais","group":2},
19 | {"name":"Tholomyes","group":3},
20 | {"name":"Listolier","group":3},
21 | {"name":"Fameuil","group":3},
22 | {"name":"Blacheville","group":3},
23 | {"name":"Favourite","group":3},
24 | {"name":"Dahlia","group":3},
25 | {"name":"Zephine","group":3},
26 | {"name":"Fantine","group":3},
27 | {"name":"Mme.Thenardier","group":4},
28 | {"name":"Thenardier","group":4},
29 | {"name":"Cosette","group":5},
30 | {"name":"Javert","group":4},
31 | {"name":"Fauchelevent","group":0},
32 | {"name":"Bamatabois","group":2},
33 | {"name":"Perpetue","group":3},
34 | {"name":"Simplice","group":2},
35 | {"name":"Scaufflaire","group":2},
36 | {"name":"Woman1","group":2},
37 | {"name":"Judge","group":2},
38 | {"name":"Champmathieu","group":2},
39 | {"name":"Brevet","group":2},
40 | {"name":"Chenildieu","group":2},
41 | {"name":"Cochepaille","group":2},
42 | {"name":"Pontmercy","group":4},
43 | {"name":"Boulatruelle","group":6},
44 | {"name":"Eponine","group":4},
45 | {"name":"Anzelma","group":4},
46 | {"name":"Woman2","group":5},
47 | {"name":"MotherInnocent","group":0},
48 | {"name":"Gribier","group":0},
49 | {"name":"Jondrette","group":7},
50 | {"name":"Mme.Burgon","group":7},
51 | {"name":"Gavroche","group":8},
52 | {"name":"Gillenormand","group":5},
53 | {"name":"Magnon","group":5},
54 | {"name":"Mlle.Gillenormand","group":5},
55 | {"name":"Mme.Pontmercy","group":5},
56 | {"name":"Mlle.Vaubois","group":5},
57 | {"name":"Lt.Gillenormand","group":5},
58 | {"name":"Marius","group":8},
59 | {"name":"BaronessT","group":5},
60 | {"name":"Mabeuf","group":8},
61 | {"name":"Enjolras","group":8},
62 | {"name":"Combeferre","group":8},
63 | {"name":"Prouvaire","group":8},
64 | {"name":"Feuilly","group":8},
65 | {"name":"Courfeyrac","group":8},
66 | {"name":"Bahorel","group":8},
67 | {"name":"Bossuet","group":8},
68 | {"name":"Joly","group":8},
69 | {"name":"Grantaire","group":8},
70 | {"name":"MotherPlutarch","group":9},
71 | {"name":"Gueulemer","group":4},
72 | {"name":"Babet","group":4},
73 | {"name":"Claquesous","group":4},
74 | {"name":"Montparnasse","group":4},
75 | {"name":"Toussaint","group":5},
76 | {"name":"Child1","group":10},
77 | {"name":"Child2","group":10},
78 | {"name":"Brujon","group":4},
79 | {"name":"Mme.Hucheloup","group":8}
80 | ],
81 | "links":[
82 | {"source":1,"target":0,"value":1},
83 | {"source":2,"target":0,"value":8},
84 | {"source":3,"target":0,"value":10},
85 | {"source":3,"target":2,"value":6},
86 | {"source":4,"target":0,"value":1},
87 | {"source":5,"target":0,"value":1},
88 | {"source":6,"target":0,"value":1},
89 | {"source":7,"target":0,"value":1},
90 | {"source":8,"target":0,"value":2},
91 | {"source":9,"target":0,"value":1},
92 | {"source":11,"target":10,"value":1},
93 | {"source":11,"target":3,"value":3},
94 | {"source":11,"target":2,"value":3},
95 | {"source":11,"target":0,"value":5},
96 | {"source":12,"target":11,"value":1},
97 | {"source":13,"target":11,"value":1},
98 | {"source":14,"target":11,"value":1},
99 | {"source":15,"target":11,"value":1},
100 | {"source":17,"target":16,"value":4},
101 | {"source":18,"target":16,"value":4},
102 | {"source":18,"target":17,"value":4},
103 | {"source":19,"target":16,"value":4},
104 | {"source":19,"target":17,"value":4},
105 | {"source":19,"target":18,"value":4},
106 | {"source":20,"target":16,"value":3},
107 | {"source":20,"target":17,"value":3},
108 | {"source":20,"target":18,"value":3},
109 | {"source":20,"target":19,"value":4},
110 | {"source":21,"target":16,"value":3},
111 | {"source":21,"target":17,"value":3},
112 | {"source":21,"target":18,"value":3},
113 | {"source":21,"target":19,"value":3},
114 | {"source":21,"target":20,"value":5},
115 | {"source":22,"target":16,"value":3},
116 | {"source":22,"target":17,"value":3},
117 | {"source":22,"target":18,"value":3},
118 | {"source":22,"target":19,"value":3},
119 | {"source":22,"target":20,"value":4},
120 | {"source":22,"target":21,"value":4},
121 | {"source":23,"target":16,"value":3},
122 | {"source":23,"target":17,"value":3},
123 | {"source":23,"target":18,"value":3},
124 | {"source":23,"target":19,"value":3},
125 | {"source":23,"target":20,"value":4},
126 | {"source":23,"target":21,"value":4},
127 | {"source":23,"target":22,"value":4},
128 | {"source":23,"target":12,"value":2},
129 | {"source":23,"target":11,"value":9},
130 | {"source":24,"target":23,"value":2},
131 | {"source":24,"target":11,"value":7},
132 | {"source":25,"target":24,"value":13},
133 | {"source":25,"target":23,"value":1},
134 | {"source":25,"target":11,"value":12},
135 | {"source":26,"target":24,"value":4},
136 | {"source":26,"target":11,"value":31},
137 | {"source":26,"target":16,"value":1},
138 | {"source":26,"target":25,"value":1},
139 | {"source":27,"target":11,"value":17},
140 | {"source":27,"target":23,"value":5},
141 | {"source":27,"target":25,"value":5},
142 | {"source":27,"target":24,"value":1},
143 | {"source":27,"target":26,"value":1},
144 | {"source":28,"target":11,"value":8},
145 | {"source":28,"target":27,"value":1},
146 | {"source":29,"target":23,"value":1},
147 | {"source":29,"target":27,"value":1},
148 | {"source":29,"target":11,"value":2},
149 | {"source":30,"target":23,"value":1},
150 | {"source":31,"target":30,"value":2},
151 | {"source":31,"target":11,"value":3},
152 | {"source":31,"target":23,"value":2},
153 | {"source":31,"target":27,"value":1},
154 | {"source":32,"target":11,"value":1},
155 | {"source":33,"target":11,"value":2},
156 | {"source":33,"target":27,"value":1},
157 | {"source":34,"target":11,"value":3},
158 | {"source":34,"target":29,"value":2},
159 | {"source":35,"target":11,"value":3},
160 | {"source":35,"target":34,"value":3},
161 | {"source":35,"target":29,"value":2},
162 | {"source":36,"target":34,"value":2},
163 | {"source":36,"target":35,"value":2},
164 | {"source":36,"target":11,"value":2},
165 | {"source":36,"target":29,"value":1},
166 | {"source":37,"target":34,"value":2},
167 | {"source":37,"target":35,"value":2},
168 | {"source":37,"target":36,"value":2},
169 | {"source":37,"target":11,"value":2},
170 | {"source":37,"target":29,"value":1},
171 | {"source":38,"target":34,"value":2},
172 | {"source":38,"target":35,"value":2},
173 | {"source":38,"target":36,"value":2},
174 | {"source":38,"target":37,"value":2},
175 | {"source":38,"target":11,"value":2},
176 | {"source":38,"target":29,"value":1},
177 | {"source":39,"target":25,"value":1},
178 | {"source":40,"target":25,"value":1},
179 | {"source":41,"target":24,"value":2},
180 | {"source":41,"target":25,"value":3},
181 | {"source":42,"target":41,"value":2},
182 | {"source":42,"target":25,"value":2},
183 | {"source":42,"target":24,"value":1},
184 | {"source":43,"target":11,"value":3},
185 | {"source":43,"target":26,"value":1},
186 | {"source":43,"target":27,"value":1},
187 | {"source":44,"target":28,"value":3},
188 | {"source":44,"target":11,"value":1},
189 | {"source":45,"target":28,"value":2},
190 | {"source":47,"target":46,"value":1},
191 | {"source":48,"target":47,"value":2},
192 | {"source":48,"target":25,"value":1},
193 | {"source":48,"target":27,"value":1},
194 | {"source":48,"target":11,"value":1},
195 | {"source":49,"target":26,"value":3},
196 | {"source":49,"target":11,"value":2},
197 | {"source":50,"target":49,"value":1},
198 | {"source":50,"target":24,"value":1},
199 | {"source":51,"target":49,"value":9},
200 | {"source":51,"target":26,"value":2},
201 | {"source":51,"target":11,"value":2},
202 | {"source":52,"target":51,"value":1},
203 | {"source":52,"target":39,"value":1},
204 | {"source":53,"target":51,"value":1},
205 | {"source":54,"target":51,"value":2},
206 | {"source":54,"target":49,"value":1},
207 | {"source":54,"target":26,"value":1},
208 | {"source":55,"target":51,"value":6},
209 | {"source":55,"target":49,"value":12},
210 | {"source":55,"target":39,"value":1},
211 | {"source":55,"target":54,"value":1},
212 | {"source":55,"target":26,"value":21},
213 | {"source":55,"target":11,"value":19},
214 | {"source":55,"target":16,"value":1},
215 | {"source":55,"target":25,"value":2},
216 | {"source":55,"target":41,"value":5},
217 | {"source":55,"target":48,"value":4},
218 | {"source":56,"target":49,"value":1},
219 | {"source":56,"target":55,"value":1},
220 | {"source":57,"target":55,"value":1},
221 | {"source":57,"target":41,"value":1},
222 | {"source":57,"target":48,"value":1},
223 | {"source":58,"target":55,"value":7},
224 | {"source":58,"target":48,"value":7},
225 | {"source":58,"target":27,"value":6},
226 | {"source":58,"target":57,"value":1},
227 | {"source":58,"target":11,"value":4},
228 | {"source":59,"target":58,"value":15},
229 | {"source":59,"target":55,"value":5},
230 | {"source":59,"target":48,"value":6},
231 | {"source":59,"target":57,"value":2},
232 | {"source":60,"target":48,"value":1},
233 | {"source":60,"target":58,"value":4},
234 | {"source":60,"target":59,"value":2},
235 | {"source":61,"target":48,"value":2},
236 | {"source":61,"target":58,"value":6},
237 | {"source":61,"target":60,"value":2},
238 | {"source":61,"target":59,"value":5},
239 | {"source":61,"target":57,"value":1},
240 | {"source":61,"target":55,"value":1},
241 | {"source":62,"target":55,"value":9},
242 | {"source":62,"target":58,"value":17},
243 | {"source":62,"target":59,"value":13},
244 | {"source":62,"target":48,"value":7},
245 | {"source":62,"target":57,"value":2},
246 | {"source":62,"target":41,"value":1},
247 | {"source":62,"target":61,"value":6},
248 | {"source":62,"target":60,"value":3},
249 | {"source":63,"target":59,"value":5},
250 | {"source":63,"target":48,"value":5},
251 | {"source":63,"target":62,"value":6},
252 | {"source":63,"target":57,"value":2},
253 | {"source":63,"target":58,"value":4},
254 | {"source":63,"target":61,"value":3},
255 | {"source":63,"target":60,"value":2},
256 | {"source":63,"target":55,"value":1},
257 | {"source":64,"target":55,"value":5},
258 | {"source":64,"target":62,"value":12},
259 | {"source":64,"target":48,"value":5},
260 | {"source":64,"target":63,"value":4},
261 | {"source":64,"target":58,"value":10},
262 | {"source":64,"target":61,"value":6},
263 | {"source":64,"target":60,"value":2},
264 | {"source":64,"target":59,"value":9},
265 | {"source":64,"target":57,"value":1},
266 | {"source":64,"target":11,"value":1},
267 | {"source":65,"target":63,"value":5},
268 | {"source":65,"target":64,"value":7},
269 | {"source":65,"target":48,"value":3},
270 | {"source":65,"target":62,"value":5},
271 | {"source":65,"target":58,"value":5},
272 | {"source":65,"target":61,"value":5},
273 | {"source":65,"target":60,"value":2},
274 | {"source":65,"target":59,"value":5},
275 | {"source":65,"target":57,"value":1},
276 | {"source":65,"target":55,"value":2},
277 | {"source":66,"target":64,"value":3},
278 | {"source":66,"target":58,"value":3},
279 | {"source":66,"target":59,"value":1},
280 | {"source":66,"target":62,"value":2},
281 | {"source":66,"target":65,"value":2},
282 | {"source":66,"target":48,"value":1},
283 | {"source":66,"target":63,"value":1},
284 | {"source":66,"target":61,"value":1},
285 | {"source":66,"target":60,"value":1},
286 | {"source":67,"target":57,"value":3},
287 | {"source":68,"target":25,"value":5},
288 | {"source":68,"target":11,"value":1},
289 | {"source":68,"target":24,"value":1},
290 | {"source":68,"target":27,"value":1},
291 | {"source":68,"target":48,"value":1},
292 | {"source":68,"target":41,"value":1},
293 | {"source":69,"target":25,"value":6},
294 | {"source":69,"target":68,"value":6},
295 | {"source":69,"target":11,"value":1},
296 | {"source":69,"target":24,"value":1},
297 | {"source":69,"target":27,"value":2},
298 | {"source":69,"target":48,"value":1},
299 | {"source":69,"target":41,"value":1},
300 | {"source":70,"target":25,"value":4},
301 | {"source":70,"target":69,"value":4},
302 | {"source":70,"target":68,"value":4},
303 | {"source":70,"target":11,"value":1},
304 | {"source":70,"target":24,"value":1},
305 | {"source":70,"target":27,"value":1},
306 | {"source":70,"target":41,"value":1},
307 | {"source":70,"target":58,"value":1},
308 | {"source":71,"target":27,"value":1},
309 | {"source":71,"target":69,"value":2},
310 | {"source":71,"target":68,"value":2},
311 | {"source":71,"target":70,"value":2},
312 | {"source":71,"target":11,"value":1},
313 | {"source":71,"target":48,"value":1},
314 | {"source":71,"target":41,"value":1},
315 | {"source":71,"target":25,"value":1},
316 | {"source":72,"target":26,"value":2},
317 | {"source":72,"target":27,"value":1},
318 | {"source":72,"target":11,"value":1},
319 | {"source":73,"target":48,"value":2},
320 | {"source":74,"target":48,"value":2},
321 | {"source":74,"target":73,"value":3},
322 | {"source":75,"target":69,"value":3},
323 | {"source":75,"target":68,"value":3},
324 | {"source":75,"target":25,"value":3},
325 | {"source":75,"target":48,"value":1},
326 | {"source":75,"target":41,"value":1},
327 | {"source":75,"target":70,"value":1},
328 | {"source":75,"target":71,"value":1},
329 | {"source":76,"target":64,"value":1},
330 | {"source":76,"target":65,"value":1},
331 | {"source":76,"target":66,"value":1},
332 | {"source":76,"target":63,"value":1},
333 | {"source":76,"target":62,"value":1},
334 | {"source":76,"target":48,"value":1},
335 | {"source":76,"target":58,"value":1}
336 | ]
337 | }
338 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | graphSub
8 | Animating Changes in Force Diagram
9 |
10 |
11 |
12 |
13 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/static/css/base.css:
--------------------------------------------------------------------------------
1 | /*! Copyright jQuery Foundation and other contributors
2 | * Includes:
3 | * - normalize.css v1.0.1 | MIT License | git.io/normalize
4 | * - Font Awesome - http://fortawesome.github.com/Font-Awesome - CC BY 3.0
5 | */
6 |
7 | /* ==========================================================================
8 | HTML5 display definitions
9 | ========================================================================== */
10 |
11 | * {
12 | -webkit-box-sizing: border-box;
13 | -moz-box-sizing: border-box;
14 | box-sizing: border-box;
15 | }
16 |
17 | /*
18 | * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3.
19 | */
20 |
21 | article,
22 | aside,
23 | details,
24 | figcaption,
25 | figure,
26 | footer,
27 | header,
28 | hgroup,
29 | nav,
30 | section,
31 | summary {
32 | display: block;
33 | }
34 |
35 | /*
36 | * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
37 | */
38 |
39 | audio,
40 | canvas,
41 | video {
42 | display: inline-block;
43 | *display: inline;
44 | *zoom: 1;
45 | }
46 |
47 | /*
48 | * Prevents modern browsers from displaying `audio` without controls.
49 | * Remove excess height in iOS 5 devices.
50 | */
51 |
52 | audio:not([controls]) {
53 | display: none;
54 | height: 0;
55 | }
56 |
57 | /* ==========================================================================
58 | Base
59 | ========================================================================== */
60 |
61 | /*
62 | * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
63 | * `em` units.
64 | * 2. Prevents iOS text size adjust after orientation change, without disabling
65 | * user zoom.
66 | */
67 |
68 | html {
69 | font-size: 100%; /* 1 */
70 | -webkit-text-size-adjust: 100%; /* 2 */
71 | -ms-text-size-adjust: 100%; /* 2 */
72 | }
73 |
74 | /*
75 | * Addresses `font-family` inconsistency between `textarea` and other form
76 | * elements.
77 | */
78 |
79 | html,
80 | button,
81 | input,
82 | select,
83 | textarea {
84 | font-family: sans-serif;
85 | color: #333;
86 | }
87 |
88 | /*
89 | * Addresses margins handled incorrectly in IE 6/7.
90 | */
91 |
92 | body {
93 | margin: 0;
94 | }
95 |
96 | ::-moz-selection {
97 | background: #b3d4fc;
98 | text-shadow: none;
99 | }
100 |
101 | ::selection {
102 | background: #b3d4fc;
103 | text-shadow: none;
104 | }
105 |
106 | .chromeframe {
107 | margin: 0.2em 0;
108 | background: #ccc;
109 | color: #000;
110 | padding: 0.2em 0;
111 | }
112 |
113 | @font-face {
114 | font-family: 'FontAwesome';
115 | src: url('fonts/fontawesome-webfont.eot?v=3.0.2');
116 | src: url('fonts/fontawesome-webfont.eot?#iefix&v=3.0.2') format('embedded-opentype'),
117 | url('fonts/fontawesome-webfont.woff?v=3.0.2') format('woff'),
118 | url('fonts/fontawesome-webfont.ttf?v=3.0.2') format('truetype');
119 | font-weight: normal;
120 | font-style: normal;
121 | }
122 |
123 | /* ==========================================================================
124 | Links
125 | ========================================================================== */
126 |
127 | /*
128 | * Addresses `outline` inconsistency between Chrome and other browsers.
129 | */
130 |
131 | a:focus {
132 | outline: thin dotted;
133 | }
134 |
135 | /*
136 | * Improves readability when focused and also mouse hovered in all browsers.
137 | */
138 |
139 | a:active,
140 | a:hover {
141 | outline: 0;
142 | }
143 |
144 | /* ==========================================================================
145 | Typography
146 | ========================================================================== */
147 |
148 | /*
149 | * Addresses font sizes and margins set differently in IE 6/7.
150 | * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5,
151 | * and Chrome.
152 | */
153 |
154 | h1 {
155 | font-size: 2em;
156 | margin: 0 0 0.33em;
157 | }
158 |
159 | h2 {
160 | font-size: 1.5em;
161 | margin: 0 0 0.5em;
162 | }
163 |
164 | h3 {
165 | font-size: 1.25em;
166 | margin: 0 0 0.67em;
167 | }
168 |
169 | h4 {
170 | font-size: 1em;
171 | margin: 0 0 1em;
172 | }
173 |
174 | h5 {
175 | font-size: 0.83em;
176 | margin: 0 0 1.33em;
177 | }
178 |
179 | h6 {
180 | font-size: 0.75em;
181 | margin: 0 0 2em;
182 | }
183 |
184 | h1, h2, h3, h4, h5, h6 {
185 | font-weight: 700;
186 | font-family: "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif !important;
187 | }
188 | /*
189 | * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome.
190 | */
191 |
192 | abbr[title] {
193 | border-bottom: 1px dotted;
194 | }
195 |
196 | /*
197 | * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
198 | */
199 |
200 | b,
201 | strong {
202 | font-weight: bold;
203 | }
204 |
205 | blockquote {
206 | margin: 1em 40px;
207 | }
208 |
209 | /*
210 | * Addresses styling not present in Safari 5 and Chrome.
211 | */
212 |
213 | dfn {
214 | font-style: italic;
215 | }
216 |
217 | /*
218 | * Addresses styling not present in IE 6/7/8/9.
219 | */
220 |
221 | mark {
222 | background: #ff0;
223 | color: #000;
224 | }
225 |
226 | /*
227 | * Addresses margins set differently in IE 6/7.
228 | */
229 |
230 | p,
231 | pre {
232 | margin: 1em 0;
233 | }
234 |
235 | /*
236 | * Improves readability of pre-formatted text in all browsers.
237 | */
238 |
239 | pre, code {
240 | white-space: pre;
241 | white-space: pre-wrap;
242 | word-wrap: break-word;
243 | word-spacing: 0;
244 | font-size: 13px;
245 | line-height: 16px;
246 | }
247 | code {
248 | padding: 0 3px;
249 | background-color: #eee; /* support: IE8 */;
250 | background-color: rgba( 0, 0, 0, .1 );
251 | border-radius: 3px;
252 | }
253 | pre code {
254 | background-color: transparent;
255 | font-size: 16px;
256 | font-weight: bold;
257 | white-space: pre;
258 | word-wrap: normal;
259 | }
260 |
261 | /*
262 | * Addresses CSS quotes not supported in IE 6/7.
263 | */
264 |
265 | q {
266 | quotes: none;
267 | }
268 |
269 | /*
270 | * Addresses `quotes` property not supported in Safari 4.
271 | */
272 |
273 | q:before,
274 | q:after {
275 | content: '';
276 | content: none;
277 | }
278 |
279 | /*
280 | * Prevents `sub` and `sup` affecting `line-height` in all browsers.
281 | */
282 |
283 | sub,
284 | sup {
285 | font-size: 75%;
286 | line-height: 0;
287 | position: relative;
288 | vertical-align: baseline;
289 | }
290 |
291 | sup {
292 | top: -0.5em;
293 | }
294 |
295 | sub {
296 | bottom: -0.25em;
297 | }
298 |
299 | /* ==========================================================================
300 | Lists
301 | ========================================================================== */
302 |
303 | /*
304 | * Addresses margins set differently in IE 6/7.
305 | */
306 |
307 | dl,
308 | menu,
309 | ol,
310 | ul {
311 | margin: 0 0 1em;
312 | }
313 |
314 | dd {
315 | margin: 0 0 0 40px;
316 | }
317 |
318 | /*
319 | * Addresses paddings set differently in IE 6/7.
320 | */
321 |
322 | menu,
323 | ol,
324 | ul {
325 | padding: 0;
326 | }
327 |
328 | /*
329 | * Corrects list images handled incorrectly in IE 7.
330 | */
331 |
332 | nav ul,
333 | nav ol {
334 | list-style: none;
335 | list-style-image: none;
336 | }
337 |
338 | /* ==========================================================================
339 | Embedded content
340 | ========================================================================== */
341 |
342 | /*
343 | * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3.
344 | * 2. Improves image quality when scaled in IE 7.
345 | */
346 |
347 | img {
348 | border: 0; /* 1 */
349 | -ms-interpolation-mode: bicubic; /* 2 */
350 | vertical-align: middle;
351 | max-width: 100%;
352 | }
353 |
354 | /* ==========================================================================
355 | Figures
356 | ========================================================================== */
357 |
358 | /*
359 | * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
360 | */
361 |
362 | figure {
363 | margin: 0;
364 | }
365 |
366 | /* ==========================================================================
367 | Forms
368 | ========================================================================== */
369 |
370 | /*
371 | * Corrects margin displayed oddly in IE 6/7.
372 | */
373 |
374 | form {
375 | margin: 0;
376 | padding: 10px 0;
377 | }
378 |
379 | /*
380 | * Define consistent border, margin, and padding.
381 | */
382 |
383 | fieldset {
384 | border: 0;
385 | margin: 0;
386 | padding: 0;
387 | }
388 |
389 | /*
390 | * 1. Corrects color not being inherited in IE 6/7/8/9.
391 | * 2. Corrects text not wrapping in Firefox 3.
392 | * 3. Corrects alignment displayed oddly in IE 6/7.
393 | */
394 |
395 | legend {
396 | border: 0; /* 1 */
397 | padding: 0;
398 | white-space: normal; /* 2 */
399 | *margin-left: -7px; /* 3 */
400 | }
401 |
402 | /*
403 | * 1. Corrects font size not being inherited in all browsers.
404 | * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5,
405 | * and Chrome.
406 | * 3. Improves appearance and consistency in all browsers.
407 | */
408 |
409 | button,
410 | input,
411 | select,
412 | textarea {
413 | font-size: 100%; /* 1 */
414 | margin: 0; /* 2 */
415 | vertical-align: baseline; /* 3 */
416 | *vertical-align: middle; /* 3 */
417 | }
418 |
419 | /*
420 | * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in
421 | * the UA stylesheet.
422 | */
423 |
424 | button,
425 | input {
426 | line-height: normal;
427 | }
428 |
429 | /*
430 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
431 | * and `video` controls.
432 | * 2. Corrects inability to style clickable `input` types in iOS.
433 | * 3. Improves usability and consistency of cursor style between image-type
434 | * `input` and others.
435 | * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
436 | * Known issue: inner spacing remains in IE 6.
437 | */
438 |
439 | button,
440 | html input[type="button"], /* 1 */
441 | input[type="reset"],
442 | input[type="submit"] {
443 | -webkit-appearance: button; /* 2 */
444 | cursor: pointer; /* 3 */
445 | *overflow: visible; /* 4 */
446 | }
447 |
448 | /*
449 | * Re-set default cursor for disabled elements.
450 | */
451 |
452 | button[disabled],
453 | input[disabled] {
454 | cursor: default;
455 | }
456 |
457 | /*
458 | * 1. Addresses box sizing set to content-box in IE 8/9.
459 | * 2. Removes excess padding in IE 8/9.
460 | * 3. Removes excess padding in IE 7.
461 | * Known issue: excess padding remains in IE 6.
462 | */
463 |
464 | input[type="checkbox"],
465 | input[type="radio"] {
466 | box-sizing: border-box; /* 1 */
467 | padding: 0; /* 2 */
468 | *height: 13px; /* 3 */
469 | *width: 13px; /* 3 */
470 | }
471 |
472 | /*
473 | * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
474 | * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
475 | * (include `-moz` to future-proof).
476 | */
477 |
478 | input[type="search"] {
479 | -webkit-appearance: textfield;
480 | box-sizing: content-box;
481 | }
482 |
483 | /*
484 | * Removes inner padding and search cancel button in Safari 5 and Chrome
485 | * on OS X.
486 | */
487 |
488 | input[type="search"]::-webkit-search-cancel-button,
489 | input[type="search"]::-webkit-search-decoration {
490 | -webkit-appearance: none;
491 | }
492 |
493 | /*
494 | * Removes inner padding and border in Firefox 3+.
495 | */
496 |
497 | button::-moz-focus-inner,
498 | input::-moz-focus-inner {
499 | border: 0;
500 | padding: 0;
501 | }
502 |
503 | /*
504 | * 1. Removes default vertical scrollbar in IE 6/7/8/9.
505 | * 2. Improves readability and alignment in all browsers.
506 | */
507 |
508 | textarea {
509 | overflow: auto; /* 1 */
510 | vertical-align: top; /* 2 */
511 | min-height: 150px;
512 | resize: vertical;
513 | }
514 |
515 | #content input[type="text"],
516 | #content input[type="email"],
517 | #content textarea {
518 | color: #666;
519 |
520 | width: 70%;
521 | min-width: 300px;
522 |
523 | margin: 5px 0 10px 0;
524 | padding: 8px 12px;
525 |
526 | background: rgba(245,245,245,0.37);
527 |
528 | border: 1px solid rgba(192,192,192,0.49);
529 | border-radius: 2px;
530 |
531 | box-shadow: inset 0 1px 3px rgba(0,0,0,0.17);
532 | }
533 |
534 | /*
535 | * 1. :-moz-placeholder has been deprecated in favor of ::-moz-placeholder.
536 | * 2. Using :placeholder for completeness.
537 | */
538 | ::-webkit-input-placeholder {
539 | color: #9A1B1E;
540 | }
541 | :-moz-placeholder { /* 1 */
542 | color: #9A1B1E;
543 | }
544 | ::-moz-placeholder {
545 | color: #9A1B1E;
546 | }
547 | :-ms-placeholder {
548 | color: #9A1B1E;
549 | }
550 | :placeholder { /* 2 */
551 | color: #9A1B1E;
552 | }
553 |
554 | #content input:focus,
555 | #content input[type="text"]:focus,
556 | #content input[type="email"]:focus,
557 | #content textarea:focus {
558 | outline: none;
559 |
560 | color: #333;
561 | background: #FFF;
562 |
563 | border: 1px solid #B24926;
564 |
565 | box-shadow: 0px 0px 6px rgba(23,138,156,0.5),
566 | inset 0px 1px 3px rgba(0,0,0,0.2);
567 | }
568 |
569 | /**
570 | * Radio Buttons
571 | */
572 |
573 | .radio {
574 | margin: 15px 0;
575 | }
576 |
577 | #content .radio ul {
578 | margin: 0;
579 | padding: 0;
580 | float: left;
581 | }
582 |
583 | #content .radio ul li {
584 | margin: 0;
585 | padding: 0;
586 | background: none;
587 | list-style-type: none;
588 | }
589 |
590 | .radio label {
591 | margin: 5px 0;
592 | }
593 |
594 | input[type=radio] {
595 | margin: 0 5px 0 0;
596 | }
597 |
598 | /**
599 | * Checkboxes
600 | */
601 |
602 | input[type="checkbox"] {
603 | margin: 0 5px 0 0;
604 | }
605 |
606 | /**
607 | * Submit Buttons
608 | */
609 |
610 | form input[type="submit"] {
611 | margin: 40px 0;
612 | float: none;
613 | }
614 |
615 | /**
616 | * Top aligned labels
617 | */
618 |
619 | .top-labels label,
620 | .top-labels .radio label,
621 | .top-labels input[type="text"],
622 | .top-labels input[type="email"],
623 | .top-labels textarea {
624 | display: block;
625 | }
626 |
627 | /**
628 | * Left aligned labels
629 | */
630 |
631 | .left-labels label {
632 | padding: 5px 0 0 0;
633 | display: block;
634 | }
635 |
636 | .left-labels span {
637 | margin: 0 10px 0 0;
638 | min-width: 100px;
639 |
640 | float: left;
641 |
642 | text-align: left;
643 | }
644 |
645 | .left-labels .radio span {
646 | padding-top: 5px;
647 | }
648 |
649 | .left-labels .radio {
650 | display: block;
651 | }
652 |
653 | .left-labels .radio li label {
654 | margin: 0;
655 | padding: 0 0 5px 0;
656 |
657 | border: 0;
658 | }
659 |
660 | /**
661 | * Label descriptions
662 | */
663 |
664 | label .field-description {
665 | font-size: 0.8em;
666 | }
667 |
668 | /* ==========================================================================
669 | Tables
670 | ========================================================================== */
671 |
672 | table {
673 | border-collapse: collapse;
674 | border-spacing: 0;
675 | }
676 |
677 | #content table {
678 | margin: 1em 2em;
679 | }
680 |
681 | #content thead tr {
682 | border-bottom: 2px solid #666;
683 | }
684 |
685 | #content tbody tr {
686 | border-bottom: 1px solid #666;
687 | }
688 |
689 | #content tbody tr:hover {
690 | background-color: #eee;
691 | }
692 |
693 | #content th {
694 | font-family: "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
695 | }
696 |
697 | #content th,
698 | #content td {
699 | padding: .5em;
700 | }
701 |
702 | /* ==========================================================================
703 | Font Awesome
704 | ========================================================================== */
705 |
706 | [class^="icon-"],
707 | [class*=" icon-"] {
708 | font-weight: normal;
709 | font-style: normal;
710 | text-decoration: inherit;
711 | -webkit-font-smoothing: antialiased;
712 |
713 | /* sprites.less reset */
714 | display: inline;
715 | width: auto;
716 | height: auto;
717 | line-height: normal;
718 | vertical-align: baseline;
719 | background-image: none;
720 | background-position: 0% 0%;
721 | background-repeat: repeat;
722 | margin-top: 0;
723 | }
724 |
725 | /* more sprites.less reset*/
726 | .icon-white,
727 | .nav-pills > .active > a > [class^="icon-"],
728 | .nav-pills > .active > a > [class*=" icon-"],
729 | .nav-list > .active > a > [class^="icon-"],
730 | .nav-list > .active > a > [class*=" icon-"],
731 | .navbar-inverse .nav > .active > a > [class^="icon-"],
732 | .navbar-inverse .nav > .active > a > [class*=" icon-"],
733 | .dropdown-menu > li > a:hover > [class^="icon-"],
734 | .dropdown-menu > li > a:hover > [class*=" icon-"],
735 | .dropdown-menu > .active > a > [class^="icon-"],
736 | .dropdown-menu > .active > a > [class*=" icon-"],
737 | .dropdown-submenu:hover > a > [class^="icon-"],
738 | .dropdown-submenu:hover > a > [class*=" icon-"] {
739 | background-image: none;
740 | }
741 | [class^="icon-"]:before,
742 | [class*=" icon-"]:before {
743 | text-decoration: inherit;
744 | display: inline-block;
745 | speak: none;
746 | }
747 | /* makes sure icons active on rollover in links */
748 | a [class^="icon-"],
749 | a [class*=" icon-"] {
750 | display: inline-block;
751 | }
752 | /* makes the font 33% larger relative to the icon container */
753 | .icon-large:before {
754 | vertical-align: -10%;
755 | font-size: 1.3333333333333333em;
756 | }
757 | .btn [class^="icon-"],
758 | .nav [class^="icon-"],
759 | .btn [class*=" icon-"],
760 | .nav [class*=" icon-"] {
761 | display: inline;
762 | /* keeps button heights with and without icons the same */
763 |
764 | }
765 | .btn [class^="icon-"].icon-large,
766 | .nav [class^="icon-"].icon-large,
767 | .btn [class*=" icon-"].icon-large,
768 | .nav [class*=" icon-"].icon-large {
769 | line-height: .9em;
770 | }
771 | .btn [class^="icon-"].icon-spin,
772 | .nav [class^="icon-"].icon-spin,
773 | .btn [class*=" icon-"].icon-spin,
774 | .nav [class*=" icon-"].icon-spin {
775 | display: inline-block;
776 | }
777 | .nav-tabs [class^="icon-"],
778 | .nav-pills [class^="icon-"],
779 | .nav-tabs [class*=" icon-"],
780 | .nav-pills [class*=" icon-"] {
781 | /* keeps button heights with and without icons the same */
782 |
783 | }
784 | .nav-tabs [class^="icon-"],
785 | .nav-pills [class^="icon-"],
786 | .nav-tabs [class*=" icon-"],
787 | .nav-pills [class*=" icon-"],
788 | .nav-tabs [class^="icon-"].icon-large,
789 | .nav-pills [class^="icon-"].icon-large,
790 | .nav-tabs [class*=" icon-"].icon-large,
791 | .nav-pills [class*=" icon-"].icon-large {
792 | line-height: .9em;
793 | }
794 | li [class^="icon-"],
795 | .nav li [class^="icon-"],
796 | li [class*=" icon-"],
797 | .nav li [class*=" icon-"] {
798 | display: inline-block;
799 | width: 1.25em;
800 | text-align: center;
801 | }
802 | li [class^="icon-"].icon-large,
803 | .nav li [class^="icon-"].icon-large,
804 | li [class*=" icon-"].icon-large,
805 | .nav li [class*=" icon-"].icon-large {
806 | /* increased font size for icon-large */
807 |
808 | width: 1.5625em;
809 | }
810 | ul.icons {
811 | list-style-type: none;
812 | text-indent: -0.75em;
813 | }
814 | ul.icons li [class^="icon-"],
815 | ul.icons li [class*=" icon-"] {
816 | width: .75em;
817 | }
818 | .icon-muted {
819 | color: #eeeeee;
820 | }
821 | .icon-border {
822 | border: solid 1px #eeeeee;
823 | padding: .2em .25em .15em;
824 | border-radius: 3px;
825 | }
826 | .icon-2x {
827 | font-size: 2em;
828 | }
829 | .icon-2x.icon-border {
830 | border-width: 2px;
831 | border-radius: 4px;
832 | }
833 | .icon-3x {
834 | font-size: 3em;
835 | }
836 | .icon-3x.icon-border {
837 | border-width: 3px;
838 | border-radius: 5px;
839 | }
840 | .icon-4x {
841 | font-size: 4em;
842 | }
843 | .icon-4x.icon-border {
844 | border-width: 4px;
845 | border-radius: 6px;
846 | }
847 | .pull-right {
848 | float: right;
849 | }
850 | .pull-left {
851 | float: left;
852 | }
853 | [class^="icon-"].pull-left,
854 | [class*=" icon-"].pull-left {
855 | margin-right: .3em;
856 | }
857 | [class^="icon-"].pull-right,
858 | [class*=" icon-"].pull-right {
859 | margin-left: .3em;
860 | }
861 | .btn [class^="icon-"].pull-left.icon-2x,
862 | .btn [class*=" icon-"].pull-left.icon-2x,
863 | .btn [class^="icon-"].pull-right.icon-2x,
864 | .btn [class*=" icon-"].pull-right.icon-2x {
865 | margin-top: .18em;
866 | }
867 | .btn [class^="icon-"].icon-spin.icon-large,
868 | .btn [class*=" icon-"].icon-spin.icon-large {
869 | line-height: .8em;
870 | }
871 | .btn.btn-small [class^="icon-"].pull-left.icon-2x,
872 | .btn.btn-small [class*=" icon-"].pull-left.icon-2x,
873 | .btn.btn-small [class^="icon-"].pull-right.icon-2x,
874 | .btn.btn-small [class*=" icon-"].pull-right.icon-2x {
875 | margin-top: .25em;
876 | }
877 | .btn.btn-large [class^="icon-"],
878 | .btn.btn-large [class*=" icon-"] {
879 | margin-top: 0;
880 | }
881 | .btn.btn-large [class^="icon-"].pull-left.icon-2x,
882 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x,
883 | .btn.btn-large [class^="icon-"].pull-right.icon-2x,
884 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x {
885 | margin-top: .05em;
886 | }
887 | .btn.btn-large [class^="icon-"].pull-left.icon-2x,
888 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x {
889 | margin-right: .2em;
890 | }
891 | .btn.btn-large [class^="icon-"].pull-right.icon-2x,
892 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x {
893 | margin-left: .2em;
894 | }
895 | .icon-spin {
896 | display: inline-block;
897 | -moz-animation: spin 2s infinite linear;
898 | -o-animation: spin 2s infinite linear;
899 | -webkit-animation: spin 2s infinite linear;
900 | animation: spin 2s infinite linear;
901 | }
902 | @-webkit-keyframes spin {
903 | 0% { -webkit-transform: rotate(0deg); }
904 | 100% { -webkit-transform: rotate(359deg); }
905 | }
906 | @keyframes spin {
907 | 0% { transform: rotate(0deg); }
908 | 100% { transform: rotate(359deg); }
909 | }
910 | @-moz-document url-prefix() {
911 | .icon-spin {
912 | height: .9em;
913 | }
914 | .btn .icon-spin {
915 | height: auto;
916 | }
917 | .icon-spin.icon-large {
918 | height: 1.25em;
919 | }
920 | .btn .icon-spin.icon-large {
921 | height: .75em;
922 | }
923 | }
924 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
925 | readers do not read off random characters that represent icons */
926 | .icon-glass:before { content: "\f000"; }
927 | .icon-music:before { content: "\f001"; }
928 | .icon-search:before { content: "\f002"; }
929 | .icon-envelope:before { content: "\f003"; }
930 | .icon-heart:before { content: "\f004"; }
931 | .icon-star:before { content: "\f005"; }
932 | .icon-star-empty:before { content: "\f006"; }
933 | .icon-user:before { content: "\f007"; }
934 | .icon-film:before { content: "\f008"; }
935 | .icon-th-large:before { content: "\f009"; }
936 | .icon-th:before { content: "\f00a"; }
937 | .icon-th-list:before { content: "\f00b"; }
938 | .icon-ok:before { content: "\f00c"; }
939 | .icon-remove:before { content: "\f00d"; }
940 | .icon-zoom-in:before { content: "\f00e"; }
941 |
942 | .icon-zoom-out:before { content: "\f010"; }
943 | .icon-off:before { content: "\f011"; }
944 | .icon-signal:before { content: "\f012"; }
945 | .icon-cog:before { content: "\f013"; }
946 | .icon-trash:before { content: "\f014"; }
947 | .icon-home:before { content: "\f015"; }
948 | .icon-file:before { content: "\f016"; }
949 | .icon-time:before { content: "\f017"; }
950 | .icon-road:before { content: "\f018"; }
951 | .icon-download-alt:before { content: "\f019"; }
952 | .icon-download:before { content: "\f01a"; }
953 | .icon-upload:before { content: "\f01b"; }
954 | .icon-inbox:before { content: "\f01c"; }
955 | .icon-play-circle:before { content: "\f01d"; }
956 | .icon-repeat:before { content: "\f01e"; }
957 |
958 | /* \f020 doesn't work in Safari. all shifted one down */
959 | .icon-refresh:before { content: "\f021"; }
960 | .icon-list-alt:before { content: "\f022"; }
961 | .icon-lock:before { content: "\f023"; }
962 | .icon-flag:before { content: "\f024"; }
963 | .icon-headphones:before { content: "\f025"; }
964 | .icon-volume-off:before { content: "\f026"; }
965 | .icon-volume-down:before { content: "\f027"; }
966 | .icon-volume-up:before { content: "\f028"; }
967 | .icon-qrcode:before { content: "\f029"; }
968 | .icon-barcode:before { content: "\f02a"; }
969 | .icon-tag:before { content: "\f02b"; }
970 | .icon-tags:before { content: "\f02c"; }
971 | .icon-book:before { content: "\f02d"; }
972 | .icon-bookmark:before { content: "\f02e"; }
973 | .icon-print:before { content: "\f02f"; }
974 |
975 | .icon-camera:before { content: "\f030"; }
976 | .icon-font:before { content: "\f031"; }
977 | .icon-bold:before { content: "\f032"; }
978 | .icon-italic:before { content: "\f033"; }
979 | .icon-text-height:before { content: "\f034"; }
980 | .icon-text-width:before { content: "\f035"; }
981 | .icon-align-left:before { content: "\f036"; }
982 | .icon-align-center:before { content: "\f037"; }
983 | .icon-align-right:before { content: "\f038"; }
984 | .icon-align-justify:before { content: "\f039"; }
985 | .icon-list:before { content: "\f03a"; }
986 | .icon-indent-left:before { content: "\f03b"; }
987 | .icon-indent-right:before { content: "\f03c"; }
988 | .icon-facetime-video:before { content: "\f03d"; }
989 | .icon-picture:before { content: "\f03e"; }
990 |
991 | .icon-pencil:before { content: "\f040"; }
992 | .icon-map-marker:before { content: "\f041"; }
993 | .icon-adjust:before { content: "\f042"; }
994 | .icon-tint:before { content: "\f043"; }
995 | .icon-edit:before { content: "\f044"; }
996 | .icon-share:before { content: "\f045"; }
997 | .icon-check:before { content: "\f046"; }
998 | .icon-move:before { content: "\f047"; }
999 | .icon-step-backward:before { content: "\f048"; }
1000 | .icon-fast-backward:before { content: "\f049"; }
1001 | .icon-backward:before { content: "\f04a"; }
1002 | .icon-play:before { content: "\f04b"; }
1003 | .icon-pause:before { content: "\f04c"; }
1004 | .icon-stop:before { content: "\f04d"; }
1005 | .icon-forward:before { content: "\f04e"; }
1006 |
1007 | .icon-fast-forward:before { content: "\f050"; }
1008 | .icon-step-forward:before { content: "\f051"; }
1009 | .icon-eject:before { content: "\f052"; }
1010 | .icon-chevron-left:before { content: "\f053"; }
1011 | .icon-chevron-right:before { content: "\f054"; }
1012 | .icon-plus-sign:before { content: "\f055"; }
1013 | .icon-minus-sign:before { content: "\f056"; }
1014 | .icon-remove-sign:before { content: "\f057"; }
1015 | .icon-ok-sign:before { content: "\f058"; }
1016 | .icon-question-sign:before { content: "\f059"; }
1017 | .icon-info-sign:before { content: "\f05a"; }
1018 | .icon-screenshot:before { content: "\f05b"; }
1019 | .icon-remove-circle:before { content: "\f05c"; }
1020 | .icon-ok-circle:before { content: "\f05d"; }
1021 | .icon-ban-circle:before { content: "\f05e"; }
1022 |
1023 | .icon-arrow-left:before { content: "\f060"; }
1024 | .icon-arrow-right:before { content: "\f061"; }
1025 | .icon-arrow-up:before { content: "\f062"; }
1026 | .icon-arrow-down:before { content: "\f063"; }
1027 | .icon-share-alt:before { content: "\f064"; }
1028 | .icon-resize-full:before { content: "\f065"; }
1029 | .icon-resize-small:before { content: "\f066"; }
1030 | .icon-plus:before { content: "\f067"; }
1031 | .icon-minus:before { content: "\f068"; }
1032 | .icon-asterisk:before { content: "\f069"; }
1033 | .icon-exclamation-sign:before { content: "\f06a"; }
1034 | .icon-gift:before { content: "\f06b"; }
1035 | .icon-leaf:before { content: "\f06c"; }
1036 | .icon-fire:before { content: "\f06d"; }
1037 | .icon-eye-open:before { content: "\f06e"; }
1038 |
1039 | .icon-eye-close:before { content: "\f070"; }
1040 | .icon-warning-sign:before { content: "\f071"; }
1041 | .icon-plane:before { content: "\f072"; }
1042 | .icon-calendar:before { content: "\f073"; }
1043 | .icon-random:before { content: "\f074"; }
1044 | .icon-comment:before { content: "\f075"; }
1045 | .icon-magnet:before { content: "\f076"; }
1046 | .icon-chevron-up:before { content: "\f077"; }
1047 | .icon-chevron-down:before { content: "\f078"; }
1048 | .icon-retweet:before { content: "\f079"; }
1049 | .icon-shopping-cart:before { content: "\f07a"; }
1050 | .icon-folder-close:before { content: "\f07b"; }
1051 | .icon-folder-open:before { content: "\f07c"; }
1052 | .icon-resize-vertical:before { content: "\f07d"; }
1053 | .icon-resize-horizontal:before { content: "\f07e"; }
1054 |
1055 | .icon-bar-chart:before { content: "\f080"; }
1056 | .icon-twitter-sign:before { content: "\f081"; }
1057 | .icon-facebook-sign:before { content: "\f082"; }
1058 | .icon-camera-retro:before { content: "\f083"; }
1059 | .icon-key:before { content: "\f084"; }
1060 | .icon-cogs:before { content: "\f085"; }
1061 | .icon-comments:before { content: "\f086"; }
1062 | .icon-thumbs-up:before { content: "\f087"; }
1063 | .icon-thumbs-down:before { content: "\f088"; }
1064 | .icon-star-half:before { content: "\f089"; }
1065 | .icon-heart-empty:before { content: "\f08a"; }
1066 | .icon-signout:before { content: "\f08b"; }
1067 | .icon-linkedin-sign:before { content: "\f08c"; }
1068 | .icon-pushpin:before { content: "\f08d"; }
1069 | .icon-external-link:before { content: "\f08e"; }
1070 |
1071 | .icon-signin:before { content: "\f090"; }
1072 | .icon-trophy:before { content: "\f091"; }
1073 | .icon-github-sign:before { content: "\f092"; }
1074 | .icon-upload-alt:before { content: "\f093"; }
1075 | .icon-lemon:before { content: "\f094"; }
1076 | .icon-phone:before { content: "\f095"; }
1077 | .icon-check-empty:before { content: "\f096"; }
1078 | .icon-bookmark-empty:before { content: "\f097"; }
1079 | .icon-phone-sign:before { content: "\f098"; }
1080 | .icon-twitter:before { content: "\f099"; }
1081 | .icon-facebook:before { content: "\f09a"; }
1082 | .icon-github:before { content: "\f09b"; }
1083 | .icon-unlock:before { content: "\f09c"; }
1084 | .icon-credit-card:before { content: "\f09d"; }
1085 | .icon-rss:before { content: "\f09e"; }
1086 |
1087 | .icon-hdd:before { content: "\f0a0"; }
1088 | .icon-bullhorn:before { content: "\f0a1"; }
1089 | .icon-bell:before { content: "\f0a2"; }
1090 | .icon-certificate:before { content: "\f0a3"; }
1091 | .icon-hand-right:before { content: "\f0a4"; }
1092 | .icon-hand-left:before { content: "\f0a5"; }
1093 | .icon-hand-up:before { content: "\f0a6"; }
1094 | .icon-hand-down:before { content: "\f0a7"; }
1095 | .icon-circle-arrow-left:before { content: "\f0a8"; }
1096 | .icon-circle-arrow-right:before { content: "\f0a9"; }
1097 | .icon-circle-arrow-up:before { content: "\f0aa"; }
1098 | .icon-circle-arrow-down:before { content: "\f0ab"; }
1099 | .icon-globe:before { content: "\f0ac"; }
1100 | .icon-wrench:before { content: "\f0ad"; }
1101 | .icon-tasks:before { content: "\f0ae"; }
1102 |
1103 | .icon-filter:before { content: "\f0b0"; }
1104 | .icon-briefcase:before { content: "\f0b1"; }
1105 | .icon-fullscreen:before { content: "\f0b2"; }
1106 |
1107 | .icon-group:before { content: "\f0c0"; }
1108 | .icon-link:before { content: "\f0c1"; }
1109 | .icon-cloud:before { content: "\f0c2"; }
1110 | .icon-beaker:before { content: "\f0c3"; }
1111 | .icon-cut:before { content: "\f0c4"; }
1112 | .icon-copy:before { content: "\f0c5"; }
1113 | .icon-paper-clip:before { content: "\f0c6"; }
1114 | .icon-save:before { content: "\f0c7"; }
1115 | .icon-sign-blank:before { content: "\f0c8"; }
1116 | .icon-reorder:before { content: "\f0c9"; }
1117 | .icon-list-ul:before { content: "\f0ca"; }
1118 | .icon-list-ol:before { content: "\f0cb"; }
1119 | .icon-strikethrough:before { content: "\f0cc"; }
1120 | .icon-underline:before { content: "\f0cd"; }
1121 | .icon-table:before { content: "\f0ce"; }
1122 |
1123 | .icon-magic:before { content: "\f0d0"; }
1124 | .icon-truck:before { content: "\f0d1"; }
1125 | .icon-pinterest:before { content: "\f0d2"; }
1126 | .icon-pinterest-sign:before { content: "\f0d3"; }
1127 | .icon-google-plus-sign:before { content: "\f0d4"; }
1128 | .icon-google-plus:before { content: "\f0d5"; }
1129 | .icon-money:before { content: "\f0d6"; }
1130 | .icon-caret-down:before { content: "\f0d7"; }
1131 | .icon-caret-up:before { content: "\f0d8"; }
1132 | .icon-caret-left:before { content: "\f0d9"; }
1133 | .icon-caret-right:before { content: "\f0da"; }
1134 | .icon-columns:before { content: "\f0db"; }
1135 | .icon-sort:before { content: "\f0dc"; }
1136 | .icon-sort-down:before { content: "\f0dd"; }
1137 | .icon-sort-up:before { content: "\f0de"; }
1138 |
1139 | .icon-envelope-alt:before { content: "\f0e0"; }
1140 | .icon-linkedin:before { content: "\f0e1"; }
1141 | .icon-undo:before { content: "\f0e2"; }
1142 | .icon-legal:before { content: "\f0e3"; }
1143 | .icon-dashboard:before { content: "\f0e4"; }
1144 | .icon-comment-alt:before { content: "\f0e5"; }
1145 | .icon-comments-alt:before { content: "\f0e6"; }
1146 | .icon-bolt:before { content: "\f0e7"; }
1147 | .icon-sitemap:before { content: "\f0e8"; }
1148 | .icon-umbrella:before { content: "\f0e9"; }
1149 | .icon-paste:before { content: "\f0ea"; }
1150 | .icon-lightbulb:before { content: "\f0eb"; }
1151 | .icon-exchange:before { content: "\f0ec"; }
1152 | .icon-cloud-download:before { content: "\f0ed"; }
1153 | .icon-cloud-upload:before { content: "\f0ee"; }
1154 |
1155 | .icon-user-md:before { content: "\f0f0"; }
1156 | .icon-stethoscope:before { content: "\f0f1"; }
1157 | .icon-suitcase:before { content: "\f0f2"; }
1158 | .icon-bell-alt:before { content: "\f0f3"; }
1159 | .icon-coffee:before { content: "\f0f4"; }
1160 | .icon-food:before { content: "\f0f5"; }
1161 | .icon-file-alt:before { content: "\f0f6"; }
1162 | .icon-building:before { content: "\f0f7"; }
1163 | .icon-hospital:before { content: "\f0f8"; }
1164 | .icon-ambulance:before { content: "\f0f9"; }
1165 | .icon-medkit:before { content: "\f0fa"; }
1166 | .icon-fighter-jet:before { content: "\f0fb"; }
1167 | .icon-beer:before { content: "\f0fc"; }
1168 | .icon-h-sign:before { content: "\f0fd"; }
1169 | .icon-plus-sign-alt:before { content: "\f0fe"; }
1170 |
1171 | .icon-double-angle-left:before { content: "\f100"; }
1172 | .icon-double-angle-right:before { content: "\f101"; }
1173 | .icon-double-angle-up:before { content: "\f102"; }
1174 | .icon-double-angle-down:before { content: "\f103"; }
1175 | .icon-angle-left:before { content: "\f104"; }
1176 | .icon-angle-right:before { content: "\f105"; }
1177 | .icon-angle-up:before { content: "\f106"; }
1178 | .icon-angle-down:before { content: "\f107"; }
1179 | .icon-desktop:before { content: "\f108"; }
1180 | .icon-laptop:before { content: "\f109"; }
1181 | .icon-tablet:before { content: "\f10a"; }
1182 | .icon-mobile-phone:before { content: "\f10b"; }
1183 | .icon-circle-blank:before { content: "\f10c"; }
1184 | .icon-quote-left:before { content: "\f10d"; }
1185 | .icon-quote-right:before { content: "\f10e"; }
1186 |
1187 | .icon-spinner:before { content: "\f110"; }
1188 | .icon-circle:before { content: "\f111"; }
1189 | .icon-reply:before { content: "\f112"; }
1190 | .icon-github-alt:before { content: "\f113"; }
1191 | .icon-folder-close-alt:before { content: "\f114"; }
1192 | .icon-folder-open-alt:before { content: "\f115"; }
1193 |
1194 | /* Manual Font Awesome Styles */
1195 | [class^="icon-"]::before, [class^="icon-"]::after,
1196 | [class*=" icon-"]::before, [class*=" icon-"]::after {
1197 | font-family: FontAwesome, "Helvetica Neue", Helvetica, Arial, sans-serif;
1198 | }
1199 |
1200 | #content ul li[class^="icon-"],
1201 | #content ul li[class*=" icon-"] {
1202 | background: none;
1203 | padding-left: 0;
1204 | }
1205 |
1206 | h2 [class^="icon-"],
1207 | h2 [class*=" icon-"],
1208 | h3 [class^="icon-"],
1209 | h3 [class*=" icon-"] {
1210 | margin-right: 7px;
1211 | }
1212 |
1213 | /* Global Structure
1214 | ========================================================================== */
1215 |
1216 | body {
1217 | -webkit-font-smoothing: antialiased;
1218 | color: #333;
1219 | font: 15px/22.5px "Helvetica Neue", HelveticaNeue, Helvetica, Arial, sans-serif;
1220 | }
1221 |
1222 | iframe {
1223 | border: 1px solid #bfbfbf;
1224 | padding: 1px;
1225 | }
1226 |
1227 | #container {
1228 | background: #0769AD;
1229 | margin: 0 auto;
1230 | padding: 0 20px;
1231 |
1232 | }
1233 |
1234 | .jquery-ui #container {
1235 | background: #B24926;
1236 | }
1237 |
1238 | .jquery-mobile #container {
1239 | background: #108040;
1240 | }
1241 |
1242 | .sizzlejs #container {
1243 | background: #9A1B1E;
1244 | }
1245 |
1246 | .qunitjs #container {
1247 | background: #390F39;
1248 | }
1249 |
1250 | .jquery-foundation #container {
1251 | background: #333;
1252 | }
1253 |
1254 | .jquery-learn #container {
1255 | background: url(../images/bg-body-learn.jpg) no-repeat center top #000;
1256 | }
1257 |
1258 | #content-wrapper {
1259 | background-color: #fff;
1260 | box-shadow: -3px 0 5px -3px rgba(1, 1, 1, 0.87), 3px 0 5px -3px rgba(1, 1, 1, 0.87);
1261 | padding: 20px 0;
1262 | border-top: 1px solid #333;
1263 | border-radius: 0 0 10px 10px;
1264 | position: relative;
1265 | }
1266 | .no-boxshadow #content-wrapper {
1267 | border: 1px solid #333;
1268 | }
1269 |
1270 | .constrain {
1271 | max-width: 1240px;
1272 | margin: 0 auto;
1273 | padding: 0 20px;
1274 | }
1275 |
1276 | .lte8 .constrain {
1277 | max-width: 1198px; /* Accomodate for padding + 1px border */
1278 | }
1279 |
1280 | #content {
1281 | float: left;
1282 | width: 71%;
1283 | }
1284 |
1285 | .content-right #content {
1286 | float: right;
1287 | }
1288 |
1289 | .content-full #content {
1290 | width: 100%;
1291 | padding-left: 10%;
1292 | padding-right: 10%;
1293 | }
1294 |
1295 | .content-full.full-width #content {
1296 | padding-left: 0;
1297 | padding-right: 0;
1298 | }
1299 |
1300 | #sidebar,
1301 | .sidebar-left,
1302 | .sidebar-right {
1303 | padding: 20px;
1304 | width: 29%;
1305 | }
1306 |
1307 | #sidebar,
1308 | .sidebar-right {
1309 | float: right;
1310 | margin-right: -25px;
1311 | position: relative;
1312 | -webkit-border-image: -webkit-linear-gradient(#ffffff, #e7e7e7 15%, #e7e7e7 85%, #ffffff);
1313 | border-image: linear-gradient(#ffffff, #e7e7e7 15%, #e7e7e7 85%, #ffffff);
1314 | box-shadow: inset 15px 0 5px -16px #e7e7e7;
1315 | background-image: -webkit-radial-gradient(left, #f2f2f2, #ffffff 80%);
1316 | background-image: radial-gradient(left, #f2f2f2, #ffffff 80%);
1317 | border: 0;
1318 | border-left: 1px solid #efefef;
1319 | }
1320 |
1321 |
1322 | .content-right #sidebar,
1323 | .sidebar-left {
1324 | float: left;
1325 | border-left: 0;
1326 | border-right: 1px solid #e7e7e7;
1327 | margin: -20px 0 0 -25px;
1328 | -webkit-border-image: -webkit-linear-gradient(#ffffff, #e7e7e7 15%, #e7e7e7 85%, #ffffff);
1329 | border-image: linear-gradient(#ffffff, #e7e7e7 15%, #e7e7e7 85%, #ffffff);
1330 | box-shadow: inset 15px 0 5px -16px #e7e7e7;
1331 | background-image: -webkit-radial-gradient(right, #f2f2f2, #ffffff 80%);
1332 | background-image: radial-gradient(right, #f2f2f2, #ffffff 80%);
1333 | }
1334 |
1335 | .entry-summary p {
1336 | margin: 0;
1337 | }
1338 |
1339 |
1340 | /* Global Nav
1341 | ========================================================================== */
1342 |
1343 | #global-nav {
1344 | background: url(../images/jq-global-nav.png) repeat-x 0 bottom #1b1b1b;
1345 | }
1346 |
1347 | #global-nav nav {
1348 | height: 34px;
1349 | }
1350 |
1351 | #global-nav nav ul {
1352 | text-align: left;
1353 | display: inline;
1354 | float: left;
1355 | margin: 0;
1356 | list-style: none;
1357 | border-right: 1px solid rgba(255, 255, 255, 0.0976562);
1358 | border-left: 1px solid rgba(0, 0, 0, 0.347656);
1359 | }
1360 |
1361 | .tinynav-container { display: none }
1362 | .tinynav { display: none }
1363 |
1364 | #global-nav nav ul.links {
1365 | float: right;
1366 | }
1367 |
1368 | #global-nav nav ul li {
1369 | font: bold 13px/17px "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
1370 | display: inline-block;
1371 | float: left;
1372 | position: relative;
1373 | top: 1px;
1374 | cursor: pointer;
1375 | transition: all 0.2s;
1376 | text-shadow: 0 0px 2px #000;
1377 | border-left: 1px solid rgba(255, 255, 255, 0.0976562);
1378 | border-right: 1px solid rgba(0, 0, 0, 0.347656);
1379 | }
1380 | .ie #global-nav nav ul li {
1381 | top: 2px;
1382 | }
1383 |
1384 | #global-nav nav ul li:hover {
1385 | background: url(../images/bg-footer-noise.jpg) #000;
1386 | color: #fff;
1387 | }
1388 |
1389 | #global-nav nav ul li i {
1390 | height: 1em;
1391 | }
1392 |
1393 | #global-nav nav ul li a {
1394 | color: #e6e6e6;
1395 | font-weight: normal;
1396 | font-style: normal;
1397 | text-decoration: none;
1398 | display: block;
1399 | padding: 8px 12px;
1400 | }
1401 |
1402 | #global-nav nav ul li ul {
1403 | padding: 0;
1404 | position: absolute;
1405 | top: 32px;
1406 | left: -2px;
1407 | width: 120px;
1408 | display: none;
1409 | opacity: 0;
1410 | visibility: hidden;
1411 | transition: opacity 0.2s;
1412 | box-shadow: 0 4px 5px rgba(0, 0, 0, 0.4);
1413 | z-index: 400;
1414 | }
1415 |
1416 | #global-nav nav ul li ul.wide {
1417 | width: 260px;
1418 | }
1419 |
1420 | #global-nav nav ul li ul li {
1421 | background: url(../images/bg-footer-noise.jpg) #000;
1422 | display: block;
1423 | color: #fff;
1424 | float: none;
1425 | }
1426 |
1427 | #global-nav nav ul li ul li:hover { background: #000; }
1428 | #global-nav nav ul li:hover ul {
1429 | display: block;
1430 | opacity: 1;
1431 | visibility: visible;
1432 | }
1433 |
1434 | #global-nav nav ul.projects li.project {
1435 | width: 42px;
1436 | padding: 0;
1437 | height: 33px;
1438 | text-indent: -9999px;
1439 | background: url(../images/jq-nav-icons.png) -6px 0;
1440 | z-index: 10;
1441 | }
1442 |
1443 | #global-nav nav ul.projects li.project a {
1444 | display: block;
1445 | height: 33px;
1446 | }
1447 |
1448 | #global-nav nav ul.projects li.jquery-ui {
1449 | background-position: -57px 0px;
1450 | }
1451 |
1452 | #global-nav nav ul.projects li.jquery-mobile {
1453 | background-position: -107px 0px;
1454 | }
1455 |
1456 | #global-nav nav ul.projects li.sizzlejs {
1457 | background-position: -155px 0px;
1458 | }
1459 |
1460 | #global-nav nav ul.projects li.qunitjs {
1461 | background-position: -204px 0px;
1462 | }
1463 |
1464 | .jquery #global-nav nav ul.projects li.jquery {
1465 | background-position: 0 bottom;
1466 | width: 52px;
1467 | position: relative;
1468 | margin-top:1px;
1469 | border: none;
1470 | }
1471 |
1472 | .jquery #global-nav nav ul.projects {
1473 | border-left: none;
1474 | }
1475 |
1476 | .jquery #global-nav nav ul.projects li.jquery-ui {
1477 | border-left: none;
1478 | background-position: -59px 0;
1479 | }
1480 |
1481 | .jquery-ui #global-nav nav ul.projects li.jquery-ui {
1482 | background-position: -50px bottom;
1483 | width: 52px;
1484 | position: relative;
1485 | margin-top:1px;
1486 | border: none;
1487 | }
1488 |
1489 | .jquery-ui #global-nav nav ul.projects li.jquery {
1490 | border-right: none;
1491 | background-position: -2px 0;
1492 | }
1493 |
1494 | .jquery-ui #global-nav nav ul.projects li.jquery-mobile {
1495 | border-left: none;
1496 | }
1497 |
1498 | .jquery-mobile #global-nav nav ul.projects li.jquery-mobile {
1499 | background-position: -100px bottom;
1500 | width: 52px;
1501 | position: relative;
1502 | margin-top:1px;
1503 | border: none;
1504 | }
1505 |
1506 | .jquery-mobile #global-nav nav ul.projects li.jquery-ui {
1507 | border-right: none;
1508 | background-position: -53px 0;
1509 | }
1510 |
1511 | .jquery-mobile #global-nav nav ul.projects li.jquery-mobile {
1512 | border-right: none;
1513 | }
1514 |
1515 | .jquery-mobile #global-nav nav ul.projects li.sizzlejs{
1516 | border-left: none;
1517 | background-position: -157px 0;
1518 | }
1519 |
1520 |
1521 | .sizzlejs #global-nav nav ul.projects li.jquery-mobile {
1522 | border-right: none;
1523 | background-position: -102px 0;
1524 | }
1525 |
1526 | .sizzlejs #global-nav nav ul.projects li.sizzlejs {
1527 | background-position: -148px bottom;
1528 | width: 52px;
1529 | position: relative;
1530 | margin-top:1px;
1531 | border: none;
1532 | }
1533 |
1534 | .sizzlejs #global-nav nav ul.projects li.qunitjs{
1535 | border-left: none;
1536 | background-position: -206px 0;
1537 | }
1538 |
1539 |
1540 | .qunitjs #global-nav nav ul.projects li.sizzlejs {
1541 | border-right: none;
1542 | }
1543 |
1544 | .qunitjs #global-nav nav ul.projects li.qunitjs {
1545 | background-position: -202px bottom;
1546 | width: 52px;
1547 | position: relative;
1548 | margin-top:1px;
1549 | border: none;
1550 | }
1551 |
1552 | .qunitjs #global-nav nav ul.projects {
1553 | border-right: none;
1554 | }
1555 |
1556 | #container,
1557 | footer {
1558 | border-top: 1px solid #7ACEF4;
1559 | }
1560 |
1561 | .jquery-ui #container,
1562 | .jquery-ui footer {
1563 | border-top-color: #FAA523;
1564 | }
1565 |
1566 | .jquery-mobile #container,
1567 | .jquery-mobile footer {
1568 | border-top-color: #3EB249;
1569 | }
1570 |
1571 | .sizzlejs #container,
1572 | .sizzlejs footer {
1573 | border-top-color: #FAA523;
1574 | }
1575 |
1576 | .qunitjs #container,
1577 | .qunitjs footer {
1578 | border-top-color: #9C3493;
1579 | }
1580 |
1581 | .jquery-learn #container,
1582 | .jquery-learn footer {
1583 | border-top-color: #333;
1584 | }
1585 |
1586 | /* Brand Colors for General Use
1587 | ========================================================================== */
1588 | .color.black { background-color: #333; }
1589 | .color.primary-blue { background-color: #0769AD; }
1590 | .color.secondary-blue { background-color: #7ACEF4; }
1591 | .color.navy-blue { background-color: #131B28; }
1592 | .color.primary-orange { background-color: #FAA523; }
1593 | .color.secondary-orange { background-color: #B24926; }
1594 | .color.primary-green { background-color: #3EB249; }
1595 | .color.secondary-green { background-color: #108040; }
1596 | .color.sizzle-orange { background-color: #FAA523; }
1597 | .color.sizzle-red { background-color: #9A1B1E; }
1598 | .color.qunit-primary-purple { background-color: #9C3493; }
1599 | .color.qunit-secondary-purple { background-color: #390F39; }
1600 | .color.globalize-primary-aqua { background-color: #009B93; }
1601 | .color.globalize-secondary-aqua { background-color: #41586B; }
1602 |
1603 | /* Logo & Navigation
1604 | ========================================================================== */
1605 |
1606 | #logo-events {
1607 | clear: both;
1608 | padding: 20px 0;
1609 | }
1610 |
1611 | h2.logo {
1612 | float: left;
1613 | margin: 20px 0 0 0;
1614 | width: 243px;
1615 | }
1616 |
1617 | h2.logo a {
1618 | float: left;
1619 | display: block;
1620 | height: 66px;
1621 | overflow: hidden;
1622 | text-indent: -1000px;
1623 | }
1624 |
1625 | .jquery h2.logo a,
1626 | .jquery-learn h2.logo a {
1627 | width: 243px;
1628 | background: url(../images/logo-jquery.png) no-repeat;
1629 | }
1630 |
1631 | .jquery-ui h2.logo a {
1632 | width: 253px;
1633 | background: url(../images/logo-jquery-ui.png) no-repeat;
1634 | }
1635 |
1636 | .jquery-mobile h2.logo a {
1637 | width: 268px;
1638 | background: url(../images/logo-jquery-mobile.png) no-repeat;
1639 | }
1640 |
1641 | .sizzlejs h2.logo a {
1642 | width: 243px;
1643 | background: url(../images/logo-sizzle.png) no-repeat;
1644 | }
1645 |
1646 | .qunitjs h2.logo a {
1647 | width: 243px;
1648 | background: url(../images/logo-qunit.png) no-repeat;
1649 | }
1650 |
1651 | .jquery-foundation h2.logo a {
1652 | width: 243px;
1653 | background: url(../images/logo-jquery-foundation.png) no-repeat;
1654 | }
1655 |
1656 | .jquery-events.jquery-foundation h2.logo a {
1657 | width: 243px;
1658 | background: url(../images/logo-jquery-events.png) no-repeat;
1659 | }
1660 |
1661 | .logo.small {
1662 | height: 30px;
1663 | background: url('../images/projectlogosfull-small.png') no-repeat;
1664 | }
1665 |
1666 | .jquery.logo.small {
1667 | width:109px;
1668 | background-position: -0px 0px;
1669 | }
1670 | .jquery-foundation.logo.small {
1671 | width: 109px;
1672 | background-position: -109px 0px;
1673 | }
1674 | .jquery-events.logo.small {
1675 | width: 109px;
1676 | background-position: -219px 0px;
1677 | }
1678 | .jqueryui.logo.small {
1679 | width: 114px;
1680 | background-position: -327px 0px;
1681 | }
1682 | .jquery-mobile.logo.small {
1683 | width: 122px;
1684 | background-position: -442px 0px;
1685 | }
1686 | .qunitjs.logo.small {
1687 | width: 105px;
1688 | background-position: -564px 0px;
1689 | }
1690 | .sizzlejs.logo.small {
1691 | width: 105px;
1692 | background-position: -669px 0px;
1693 | }
1694 |
1695 | #logo-events aside {
1696 | float: right;
1697 | }
1698 |
1699 | nav#main {
1700 | background-color: rgba(0, 0, 0, 0.18);
1701 | border-radius: 10px 10px 0 0;
1702 | border-right: 1px solid rgba(2, 2, 2, 0.28);
1703 | border-left: 1px solid rgba(2, 2, 2, 0.28);
1704 | border-top: 1px solid rgba(250, 250, 250, 0.27);
1705 | box-shadow: rgba(255,255,255,0.3) 0 1px 0, rgba(0,0,0,0.3) 0 -1px 0;
1706 | box-shadow: 0 0 5px rgba(1, 1, 1, 0.7);
1707 | }
1708 |
1709 | .jquery-ui nav#main,
1710 | .sizzlejs nav#main {
1711 | background-color: rgba(12, 12, 12, 0.06);
1712 | }
1713 | .qunitjs nav#main {
1714 | background-color: rgba(156, 52, 147, 0.5);
1715 | }
1716 | .jquery-learn nav#main {
1717 | background-color: rgba(0, 0, 0, 0.4);
1718 | }
1719 |
1720 | .jquery-foundation nav#main {
1721 | background-color: rgba(102, 102, 102, 0.1);
1722 | }
1723 |
1724 | .no-boxshadow nav#main {
1725 | border-top: 1px solid #333;
1726 | border-left: 1px solid #333;
1727 | border-right: 1px solid #333;
1728 | }
1729 |
1730 | nav#main ul {
1731 | margin: 0;
1732 | float: left;
1733 | width: 70%;
1734 | padding-top: 10px;
1735 | padding-bottom: 10px;
1736 | }
1737 |
1738 | nav#main li {
1739 | float: left;
1740 | font: normal normal 16px "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
1741 | margin-right: 2px;
1742 | }
1743 |
1744 | nav#main li a {
1745 | color: #fff;
1746 | text-decoration: none;
1747 | padding: 6px 10px;
1748 | display: block;
1749 | border: 1px solid transparent;
1750 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.76);
1751 | }
1752 |
1753 | nav#main li a:hover,
1754 | nav#main li.current a,
1755 | nav#main .searchform {
1756 | background: none;
1757 | box-shadow: inset 0 0 5px rgba(0,0,0, 0.4), rgba(255,255,255,0.1) 0 1px 0;
1758 | border-radius: 4px;
1759 | border: 1px solid rgba(0,0,0,0.25);
1760 | color: #fff;
1761 | text-shadow: rgba(0, 0, 0, 0.796875) 0px -1px 0px, rgba(255, 255, 255, 0.296875) 0px 0px 10px;
1762 | }
1763 |
1764 | nav#main .searchform {
1765 | float: right;
1766 | width: 28%;
1767 | margin-top: 12px;
1768 | margin-bottom: 12px;
1769 | padding: 0;
1770 | border-radius: 20px;
1771 | position: relative;
1772 | }
1773 |
1774 | nav#main .searchform input {
1775 | text-decoration: none;
1776 | font: 12px/12px "Lucida Grande", Lucida, Verdana, sans-serif;
1777 | padding: 5px 10px;
1778 | margin: 0;
1779 | background-color: transparent;
1780 | border-style: none;
1781 | color: #fff;
1782 | line-height: 1.3;
1783 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.76);
1784 | width: 85%;
1785 | box-shadow: none;
1786 | }
1787 |
1788 | nav#main .searchform input:focus {
1789 | outline: none;
1790 | }
1791 |
1792 | .no-boxshadow nav#main .searchform {
1793 | border: 1px solid #333;
1794 | }
1795 |
1796 | .no-boxshadow nav#main .searchform input {
1797 | background: #fff;
1798 | color: #333;
1799 | }
1800 |
1801 | /*
1802 | * 1. :-moz-placeholder has been deprecated in favor of ::-moz-placeholder.
1803 | * 2. Using :placeholder for completeness.
1804 | */
1805 | nav#main .searchform input::-webkit-input-placeholder {
1806 | color: #fff;
1807 | }
1808 | nav#main .searchform input:-moz-placeholder { /* 1 */
1809 | color: #fff;
1810 | }
1811 | nav#main .searchform input::-moz-placeholder {
1812 | color: #fff;
1813 | }
1814 | nav#main .searchform input:-ms-input-placeholder {
1815 | color: #fff;
1816 | }
1817 | nav#main .searchform input:placeholder { /* 2 */
1818 | color: #fff;
1819 | }
1820 |
1821 | nav#main .searchform .icon-search {
1822 | position: absolute;
1823 | right: 10px;
1824 | top: 3px;
1825 | bottom: 3px;
1826 | border-width: 0;
1827 | border-left: 1px solid rgba(7, 7, 7, 0.65);
1828 | background-color: transparent;
1829 | padding: 0 0 0 7px;
1830 | opacity: 0.33;
1831 | color: #fff;
1832 | }
1833 |
1834 | #broadcast {
1835 | height: 100px;
1836 | }
1837 |
1838 | /* Typography & Global Styles
1839 | ========================================================================== */
1840 |
1841 | #content a {
1842 | text-decoration: underline;
1843 | }
1844 |
1845 | #content a:hover {
1846 | text-decoration: none;
1847 | }
1848 |
1849 | #sidebar a {
1850 | text-decoration: none;
1851 | }
1852 |
1853 | #sidebar a:hover {
1854 | text-decoration: underline;
1855 | }
1856 |
1857 | p {
1858 | margin-bottom: 15px;
1859 | margin-top: 0;
1860 | }
1861 |
1862 | b, strong {
1863 | font-weight: bold;
1864 | color: #1a1a1a;
1865 | }
1866 |
1867 | em, i {
1868 | color: #6d6d6d;
1869 | font-style: italic;
1870 | }
1871 |
1872 | hr {
1873 | background-image: url(../images/gauze.png);
1874 | height: .75em;
1875 | border: none;
1876 | margin: .75em 0;
1877 | }
1878 |
1879 | #content code a {
1880 | text-decoration: none;
1881 | }
1882 |
1883 | pre strong,
1884 | pre b {
1885 | color: #fff;
1886 | font-weight: bold;
1887 | }
1888 |
1889 | #content blockquote {
1890 | margin: 20px 0;
1891 | }
1892 |
1893 | #content blockquote p {
1894 | font: italic normal 23px/26px "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
1895 | color: #828282;
1896 | margin-left: 0;
1897 | margin-bottom: 0;
1898 | padding: 20px 30px;
1899 | position: relative;
1900 | text-shadow: 0 1px 0 #ffffff;
1901 | background-color: #f2f2f2;
1902 | }
1903 |
1904 | #content ol,
1905 | #content ul {
1906 | margin: 0 0 20px 20px;
1907 | }
1908 |
1909 | #content ul ul {
1910 | margin-bottom: 0;
1911 | }
1912 |
1913 | #content ul li {
1914 | padding-bottom: 5px;
1915 | padding-top: 5px;
1916 | padding-left: 20px;
1917 | line-height: 20px;
1918 | list-style-type: none;
1919 | background: url(../images/bullet.png) no-repeat 0 10px;
1920 | }
1921 |
1922 | #content ul.block-grid li {
1923 | background: none;
1924 | }
1925 |
1926 | #content ol {
1927 | counter-reset: li; /* Initiate a counter */
1928 | }
1929 |
1930 | #content ol > li {
1931 | position: relative; /* Give each list item a left margin to make room for the numbers */
1932 | list-style: none;
1933 | padding-left: 10px;
1934 | margin-right: 0;
1935 | margin-top: 5px;
1936 | margin-left: 30px;
1937 | }
1938 | #content ol > li:before {
1939 | content: counter(li); /* Use the counter as content */
1940 | counter-increment: li; /* Increment the counter by 1 */
1941 | /* Position and style the number */
1942 | position: absolute;
1943 | top: 1px;
1944 | left: -25px;
1945 | box-sizing: border-box;
1946 | width: 20px;
1947 | /* Some space between the number and the content in browsers that support
1948 | generated content but not positioning it */
1949 | color: #fff;
1950 | text-align: center;
1951 | background-color: #ababab;
1952 | height: 19px;
1953 | width: 19px;
1954 | padding-top: 0px;
1955 | font: bold 11px/19px "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
1956 | border-radius: 12px;
1957 | }
1958 |
1959 | .lt-ie8 #content ol,
1960 | .lt-ie7 #content ol {
1961 | margin-left: 20px;
1962 | }
1963 |
1964 | .lt-ie8 #content ol li,
1965 | .lt-ie7 #content ol li {
1966 | margin-left: 30px;
1967 | list-style-type: decimal;
1968 | padding-left: 0px;
1969 | }
1970 |
1971 | #content img.full,
1972 | #content figure.full {
1973 | display: block;
1974 | width: 100%;
1975 | max-width: 100%;
1976 | }
1977 |
1978 | .lt-ie8 #content figure img {
1979 | position: relative;
1980 | }
1981 |
1982 | .lt-ie7 #content figure.full,
1983 | .lt-ie8 #content figure.full {
1984 | width: 99%;
1985 | }
1986 |
1987 | #content img.full,
1988 | #content img.left,
1989 | #content img.right,
1990 | #banner img.full {
1991 | box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.20);
1992 | }
1993 |
1994 | #content img.noborder,
1995 | #content figure.noborder {
1996 | box-shadow: none;
1997 | border: none;
1998 | background: none;
1999 | }
2000 |
2001 | #content img.full,
2002 | #content img.left,
2003 | #content img.right,
2004 | #content figure.full,
2005 | #content figure.left,
2006 | #content figure.right {
2007 | margin-bottom: 20px;
2008 | float: left;
2009 | }
2010 |
2011 | #content img.right,
2012 | #content figure.right {
2013 | float: right;
2014 | margin-left: 15px;
2015 | }
2016 |
2017 | .lt-ie8 #content img.right,
2018 | .lt-ie8 #content figure.right,
2019 | .lt-ie7 #content img.right,
2020 | .lt-ie7 #content figure.right {
2021 | float: left;
2022 | margin-left: 0px;
2023 | margin-right: 15px;
2024 | }
2025 |
2026 | #content img.left,
2027 | #content figure.left {
2028 | margin-right: 15px;
2029 | }
2030 |
2031 |
2032 | #content figure img {
2033 | margin: 0px !important;
2034 | margin-bottom: 0px !important;
2035 | }
2036 |
2037 | #content figcaption {
2038 | box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.20);
2039 | font: italic 700 12px/20px "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
2040 | padding-left: 10px;
2041 | padding-right: 10px;
2042 | padding-top: 5px;
2043 | padding-bottom: 5px;
2044 | color: #737272;
2045 | clear: both;
2046 | margin-top: -10px;
2047 | background-color: #f2f2f2;
2048 | }
2049 |
2050 | #content figure.noborder figcaption {
2051 | box-shadow: none;
2052 | background: none;
2053 | text-align: center;
2054 | }
2055 |
2056 | #content .embed,
2057 | #content .embed_media {
2058 | position: relative;
2059 | padding-bottom: 56.25%; /* 16/9 ratio */
2060 | height: 0;
2061 | overflow: hidden;
2062 | box-shadow: 0px 0px 5px 1px rgba(0, 0, 0, 0.20);
2063 | margin-bottom: 20px;
2064 | }
2065 |
2066 | #portfolio.media #banner .embed {
2067 | margin-bottom: 40px;
2068 | }
2069 |
2070 | .embed iframe,
2071 | .embed_media iframe,
2072 | .embed object,
2073 | .embed_media object,
2074 | .embed embed,
2075 | .embed_media embed {
2076 | position: absolute;
2077 | top: 0;
2078 | left: 0;
2079 | width: 100%;
2080 | height: 100%;
2081 | }
2082 |
2083 | #content h1 {
2084 | font-size: 36px;
2085 | line-height: 36px;
2086 | }
2087 |
2088 | .content-full #content h1 {
2089 | text-align: center;
2090 | }
2091 |
2092 | #content h2 {
2093 | font-size: 24px;
2094 | line-height: 24px;
2095 | color: #333;
2096 | margin-bottom: 10px;
2097 | }
2098 |
2099 | #content h3 {
2100 | font-size: 20px;
2101 | line-height: 20px;
2102 | color: #666;
2103 | }
2104 |
2105 | #content h1.block,
2106 | #content h2.block {
2107 | padding: 10px 2%;
2108 | background: url(../images/gauze.png) #ececec;
2109 | text-shadow: 0 1px 0 #ffffff;
2110 | }
2111 |
2112 | p.author {
2113 | color: #ababab;
2114 | font-family: "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
2115 | font-weight: 700;
2116 | margin-top: -20px;
2117 | }
2118 |
2119 | p.author a {
2120 | color: #ababab;
2121 | }
2122 |
2123 | .meta {
2124 | padding: 2%;
2125 | padding-bottom: .5%;
2126 | margin-bottom: 20px;
2127 | font: 700 "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
2128 | color: #666;
2129 | background: url(../images-foundation/gauze.png) #f0f0f0;
2130 | text-shadow: 0 1px 0 #ffffff;
2131 | }
2132 |
2133 | #banner-large-image {
2134 | text-align: center;
2135 | margin-bottom: 30px;
2136 |
2137 | }
2138 |
2139 | #banner-large-image .vertically-centered-black-bg {
2140 | height: 50%;
2141 | width: 100%;
2142 | margin-top: 24%;
2143 | display: block;
2144 | background-color: rgba(0, 0, 0, 0.68);
2145 | position: absolute;
2146 | padding-top: 3.5%;
2147 | }
2148 |
2149 | #banner-large-image h1, #banner-large-image h2 {
2150 | font: bold 60px/60px "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
2151 | margin-bottom: 0;
2152 | color: #fff;
2153 | text-shadow: 0 0 4px rgba(0, 0, 0, 0.85);
2154 | }
2155 |
2156 | #banner-large-image p {
2157 | color: #CCCCCC;
2158 | font: 700 normal 24px/36px "klavika-web", "Helvetica Neue", sans-serif;
2159 | }
2160 |
2161 | #banner-secondary {
2162 | background-image: url(../images/dark-grey-tile.png);
2163 | margin: -20px -25px 15px;
2164 | padding: 20px;
2165 | }
2166 |
2167 | #banner-secondary h1,
2168 | #banner-secondary h2 {
2169 | margin-bottom: 0;
2170 | color: #fff;
2171 | text-shadow: 0 0 4px rgba(0, 0, 0, 0.85);
2172 | }
2173 |
2174 | #banner-secondary h1 {
2175 | font-size: 48px;
2176 | line-height: 54px;
2177 | }
2178 |
2179 | #banner-secondary h2 {
2180 | font-size: 36px;
2181 | line-height: 42px;
2182 | }
2183 |
2184 | #banner-secondary p {
2185 | color: #ccc;
2186 | font: 22px/26px "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
2187 | padding-left: 15%;
2188 | padding-right: 15%;
2189 | }
2190 |
2191 | #banner-secondary a,
2192 | #banner-secondary a:hover {
2193 | color: #7ACEF4;
2194 | }
2195 |
2196 | #banner-secondary em,
2197 | #banner-secondary i {
2198 | color: #fff;
2199 | }
2200 |
2201 | #banner-secondary.large-banner {
2202 | text-align: center;
2203 | padding-top: 30px;
2204 | padding-bottom: 30px;
2205 | }
2206 |
2207 | #banner-secondary.large-banner h1,
2208 | #banner-secondary.large-banner h2 {
2209 | margin-bottom: 10px;
2210 | }
2211 |
2212 | #banner-secondary.large-banner h1 {
2213 | font-size: 60px;
2214 | line-height: 60px;
2215 | }
2216 |
2217 | #banner-secondary.large-banner h2 {
2218 | font-size: 48px;
2219 | line-height: 48px;
2220 | }
2221 |
2222 | #banner-secondary.large-banner h3 {
2223 | font-size: 36px;
2224 | line-height: 36px;
2225 | }
2226 |
2227 | .center-txt {
2228 | text-align: center !important;
2229 | }
2230 |
2231 | .callout-block {
2232 | background-image: url(../images/gauze.png);
2233 | padding: 20px;
2234 | }
2235 |
2236 | /* Buttons
2237 | ========================================================================== */
2238 |
2239 | a.button,
2240 | #content a.button,
2241 | .button,
2242 | input[type="submit"] {
2243 | border-radius: 5px;
2244 | border: 1px solid #999;
2245 | box-shadow:
2246 | 0 0 5px rgba(0, 0, 0, 0.28),
2247 | inset 0 1px 0 rgba(255, 255, 255, 0.45),
2248 | inset 0px -1px 0px rgba(255, 255, 255, 0.45),
2249 | inset 1px 0px 0px rgba(255, 255, 255, 0.45),
2250 | inset -1px 1px 0px rgba(255, 255, 255, 0.45);
2251 | text-decoration: none;
2252 | color: #fff !important;
2253 | text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.35);
2254 | padding: 8px 15px;
2255 | font: bold 16px/16px "klavika-web", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
2256 | transition: all 0.2s;
2257 | background-color: #d18f4f;
2258 | float: left;
2259 | }
2260 |
2261 | a.button:hover,
2262 | #content a.button:hover,
2263 | .button:hover,
2264 | input[type="submit"]:hover {
2265 | background-color: #cc8540;
2266 | }
2267 |
2268 | a.button.large,
2269 | #content a.button.large,
2270 | button.large,
2271 | input[type="submit"].large {
2272 | font-size: 20px;
2273 | padding: 12px 20px;
2274 | }
2275 |
2276 | a.button.dark,
2277 | #content a.button.dark,
2278 | .button.dark,
2279 | input[type="submit"].dark {
2280 | background-color: #666;
2281 | }
2282 |
2283 | a.button.dark:hover,
2284 | #content a.button.dark:hover,
2285 | .button.dark:hover,
2286 | input[type="submit"].dark:hover {
2287 | background-color: #424141;
2288 | }
2289 |
2290 | /* Sidebar
2291 | ========================================================================== */
2292 |
2293 | #sidebar h3 {
2294 | font: 20px/18px;
2295 | background-image: -webkit-linear-gradient(left, #efefef, #f3f3f3);
2296 | background-image: linear-gradient(to right, #efefef, #f3f3f3);
2297 | margin-left: -20px;
2298 | margin-right: -20px;
2299 | padding: 12px 20px;
2300 | text-shadow: 0 1px 0 #ffffff;
2301 | }
2302 |
2303 | #sidebar li {
2304 | padding: 5px 0 5px 20px;
2305 | list-style-type: none;
2306 | background: url(../images/bullet.png) no-repeat 0 12px;
2307 | text-shadow: 0 1px 0 #ffffff;
2308 | }
2309 |
2310 | #sidebar li a {
2311 | color: #4d4d4d;
2312 | text-decoration: none;
2313 | display: block;
2314 | }
2315 |
2316 | #sidebar nav#secondary li {
2317 | background-image: none;
2318 | padding-left: 0;
2319 | }
2320 |
2321 | #sidebar nav#secondary li.current {
2322 | background-color: #eee;
2323 | margin-left: -35px;
2324 | margin-right: -20px;
2325 | padding-left: 35px;
2326 | font-weight: bold;
2327 | }
2328 |
2329 | /* == Footer
2330 | ========================================================================== */
2331 |
2332 | footer {
2333 | background: url(../images/bg-footer-noise.jpg) repeat;
2334 | margin-top: -20px;
2335 | padding-top: 40px;
2336 | }
2337 |
2338 | footer.simple {
2339 | padding-top: 45px;
2340 | padding-bottom: 10px;
2341 | }
2342 |
2343 | footer a,
2344 | footer strong {
2345 | color: #fff;
2346 | text-decoration: none;
2347 | }
2348 |
2349 | footer .download {
2350 | text-align: center;
2351 | color: #fff;
2352 | padding: 10px 2% 15px 2%;
2353 | line-height: 140%;
2354 | }
2355 |
2356 | footer .download strong { margin-right: 10px; }
2357 |
2358 | footer .download > span { white-space: nowrap; }
2359 |
2360 | footer .download a { margin: 0 10px; }
2361 |
2362 | footer .download a em {
2363 | font-style: normal;
2364 | color: #aaa;
2365 | }
2366 |
2367 | footer .download a:hover { border-bottom: solid 1px #888; }
2368 |
2369 | footer .footer-icon-links li {
2370 | width: 22%;
2371 | margin-left: 11%;
2372 | float: left;
2373 | }
2374 |
2375 | footer .footer-icon-links li a {
2376 | display: block;
2377 | line-height: inherit;
2378 | font-size: 18px;
2379 | float: left;
2380 | position: relative;
2381 | width: auto;
2382 | text-align: left;
2383 | padding-left: 10px;
2384 | }
2385 |
2386 | footer .footer-icon-links li a:before {
2387 | position: absolute;
2388 | left: -35px;
2389 | top: 10px;
2390 | font-size: 2em;
2391 | color: #4d4d4d;
2392 | text-shadow: 0 -1px 0 #000000;
2393 | }
2394 |
2395 | footer .footer-icon-links li small {
2396 | display: block;
2397 | font-size: 14px;
2398 | color: #777;
2399 | line-height: 120%;
2400 | }
2401 |
2402 | footer .footer-icon-links li:hover a:before {
2403 | color: #d1d1d1;
2404 | }
2405 |
2406 | .multiplebgs.cssgradients footer {
2407 | background-image: -webkit-linear-gradient(rgba(0,0,0,0.3), rgba(0,0,0,0.0)), url(../images/bg-footer-noise.jpg); /* Chrome 10+, Saf6 */
2408 | background-image: linear-gradient(to bottom, rgba(0,0,0,.3), rgba(0,0,0,0)), url(../images/bg-footer-noise.jpg); /* Firefox 16+, IE 10+, Opera 12.50+ */
2409 | background-repeat: repeat-x, repeat;
2410 | background-size: 100px 15px, 140px 140px;
2411 | }
2412 |
2413 | .no-multiplebgs footer, .no-cssgradients footer {
2414 | background-image: url(../images/bg-footer-noise.jpg);
2415 | background-repeat: repeat;
2416 | }
2417 |
2418 | footer h3 {
2419 | color: #777;
2420 | letter-spacing: normal;
2421 | text-transform: uppercase;
2422 | text-shadow: #000 0 1px 0;
2423 | border: solid 1px #000;
2424 | text-rendering: optimizeLegibility;
2425 | border-bottom: none;
2426 | border-radius: 4px 4px 0 0;
2427 | position: relative;
2428 | text-align: center;
2429 | height: 10px;
2430 | margin-top: 20px;
2431 | font-size: 16px;
2432 | }
2433 |
2434 | footer h3 span {
2435 | display: inline-block;
2436 | padding: 3px 10px;
2437 | position: relative;
2438 | top: -0.8em;
2439 | background: url(../images/bg-footer-noise.jpg) repeat #212121;
2440 | z-index: 1;
2441 | }
2442 |
2443 | footer h3:after {
2444 | content: "";
2445 | position: absolute;
2446 | left: 0;
2447 | top: 0;
2448 | width: 100%;
2449 | height: 100%;
2450 | border: solid 1px #333;
2451 | border-bottom: none;
2452 | border-radius: 4px 4px 0 0;
2453 | }
2454 |
2455 | .footer-site-links {
2456 | float: right;
2457 | padding: 10px 0 0 0;
2458 | width: 58%;
2459 | text-align: right;
2460 | }
2461 |
2462 | footer p.copyright {
2463 | margin: 10px 0 0 0;
2464 | float: left;
2465 | width: 40%;
2466 | font-size: 11px;
2467 | line-height: 130%;
2468 | color: #777;
2469 | }
2470 |
2471 | footer p.copyright a {
2472 | color: #aaa;
2473 | }
2474 |
2475 | footer p.copyright a:hover {
2476 | color: #fff;
2477 | }
2478 |
2479 | footer p.copyright span.sponsor-line {
2480 | display: block;
2481 | font-size: 10px;
2482 | margin-top: 1em;
2483 | }
2484 |
2485 | footer p.copyright a.mt-link {
2486 | background: url(../images/logo-mediatemple.png) left top no-repeat;
2487 | padding-left: 31px;
2488 | }
2489 |
2490 | footer p.copyright a.mc-link {
2491 | background: url(../images/logo-maxcdn.png) left top no-repeat;
2492 | padding-left: 24px;
2493 | padding-top: 2px;
2494 | padding-bottom: 2px;
2495 | }
2496 |
2497 | footer p.copyright a.wp-link {
2498 | background: url(../images/logo-wordpress.png) left top no-repeat;
2499 | padding-left: 19px;
2500 | padding-top: 1px;
2501 | display: inline-block;
2502 | height: 16px;
2503 | }
2504 |
2505 | .footer-site-links li {
2506 | position: relative;
2507 | background: none;
2508 | width: auto;
2509 | height: auto;
2510 | line-height: 20px;
2511 | margin: 0 0 10px 20px;
2512 | font-size: 13px;
2513 | }
2514 |
2515 | .footer-site-links li:first-child {
2516 | margin-left: 0;
2517 | }
2518 |
2519 | .footer-site-links li a {
2520 | position: relative;
2521 | color: #aaa;
2522 | display: block;
2523 | padding-left: 30px;
2524 | width: auto;
2525 | line-height: inherit;
2526 | }
2527 |
2528 | .footer-site-links li a:before {
2529 | position: absolute;
2530 | font-size: 1.5em;
2531 | color: #4d4d4d;
2532 | text-shadow: 0 -1px 0 #000000;
2533 | left: 2px;
2534 | }
2535 |
2536 | .footer-site-links li:hover a,
2537 | .footer-site-links li:hover a:before {
2538 | color: #e6e6e6;
2539 | }
2540 |
2541 | .footer-site-links li {
2542 | display: inline-block;
2543 | }
2544 |
2545 | footer ul li {
2546 | list-style: none;
2547 | padding: 0;
2548 | margin: 0;
2549 | line-height: 30px;
2550 | }
2551 |
2552 | footer #legal {
2553 | margin-top: 1em;
2554 | border-top: solid 1px #333;
2555 | box-shadow: #000 0 -1px 0;
2556 | }
2557 |
2558 | footer .books li {
2559 | float: left;
2560 | width: 30%;
2561 | min-width: 95px;
2562 | margin-left: 2.8%;
2563 | margin-bottom: 15px;
2564 | line-height: 130%;
2565 | font-size: 11px;
2566 | text-align: center;
2567 | }
2568 |
2569 | footer .books li:first-child {
2570 | margin-left: 2%;
2571 | }
2572 |
2573 | footer .books li a img {
2574 | display: block;
2575 | border-radius: 5px;
2576 | border: solid 1px rgba(255,255,255,0.2);
2577 | width: 92px;
2578 | height: 114px;
2579 | margin: 0 auto 5px;
2580 | }
2581 |
2582 | footer .books li a:hover img {
2583 | border-color: #fff;
2584 | }
2585 |
2586 | footer .books li a cite {
2587 | display: block;
2588 | font-style: normal;
2589 | font-size: 9px;
2590 | line-height: 1.5em;
2591 | color: #aaa;
2592 | }
2593 |
2594 |
2595 |
2596 | /* General Styles
2597 | ========================================================================== */
2598 |
2599 | #content .entry-title a {
2600 | text-decoration: none;
2601 | }
2602 |
2603 | .entry-meta {
2604 | color: #999;
2605 | font-size: 12px;
2606 | }
2607 |
2608 | .toc-linked {
2609 | position: relative;
2610 | }
2611 |
2612 | .toc-linked .toc-link {
2613 | position: absolute;
2614 | left: -1em;
2615 | text-decoration: none;
2616 | opacity: 0;
2617 | }
2618 | /* TODO: Remove (https://github.com/jquery/jquery-wp-content/issues/143) */
2619 | #content .toc-linked .toc-link {
2620 | text-decoration: none;
2621 | }
2622 |
2623 | .toc-linked:hover .toc-link {
2624 | opacity: 1;
2625 | }
2626 |
2627 | .post-heirarchy {
2628 | margin-bottom: 0.75em;
2629 | }
2630 |
2631 | /* Listing Pages (categories, searches, etc.)
2632 | ========================================================================== */
2633 |
2634 | .listing .hentry {
2635 | padding: 10px 20px;
2636 | margin: 15px 0;
2637 | border: 1px solid rgba( 0, 0, 0, 0.2 );
2638 | border-radius: 5px;
2639 | background-color: #eee;
2640 | position: relative;
2641 | }
2642 |
2643 | .listing #content .entry-title {
2644 | font-size: 1.3em;
2645 | margin-bottom: 0;
2646 | text-shadow: 0 1px 1px #fff;
2647 | }
2648 |
2649 | .listing .entry-meta {
2650 | float: right;
2651 | }
2652 |
2653 | .listing .entry-meta .category {
2654 | padding: 4px;
2655 | background-color: #ddd;
2656 | border-radius: 5px;
2657 | }
2658 |
2659 | .listing #content .entry-meta .category a {
2660 | color: #888;
2661 | text-decoration: none;
2662 | }
2663 |
2664 | .pagination {
2665 | text-align: center;
2666 | margin-top: 2em;
2667 | }
2668 |
2669 | .page-numbers {
2670 | padding: 0 10px;
2671 | }
2672 |
2673 |
2674 |
2675 | /* API Sites
2676 | ========================================================================== */
2677 |
2678 | .entry {
2679 | margin: 15px 0;
2680 | }
2681 |
2682 | .entry-wrapper {
2683 | border: 1px solid #CCC;
2684 | border-top: 0;
2685 | padding: 10px;
2686 | border-radius: 0 0 5px 5px;
2687 | }
2688 |
2689 | #content .section-title {
2690 | background: #333;
2691 | border: 1px solid #111;
2692 | padding: 8px 15px;
2693 | font-size: 16px;
2694 | color: white;
2695 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.5);
2696 | letter-spacing: 0;
2697 | border-radius: 5px 5px 0 0;
2698 | font-weight: normal;
2699 | margin-bottom: 0;
2700 | overflow: hidden;
2701 | }
2702 |
2703 | .returns {
2704 | float: right;
2705 | font-style: italic;
2706 | }
2707 |
2708 | .api-item .returns {
2709 | font-size: 16px;
2710 | color: #333;
2711 | font-weight: normal;
2712 | }
2713 |
2714 | .api-item .version-details {
2715 | display: block;
2716 | padding: 0.5em;
2717 | margin: 1em 0;
2718 | background: #fff3a5;
2719 | border-radius: 5px;
2720 | }
2721 |
2722 | #content .signatures {
2723 | background: #eee;
2724 | border: 1px solid #ccc;
2725 | margin: 0 auto 15px;
2726 | max-width: 750px;
2727 | border-radius: 3px;
2728 | color: #333;
2729 | text-shadow: 0 1px 0 #fff;
2730 | }
2731 |
2732 | #content .signatures li {
2733 | list-style: none;
2734 | background: none;
2735 | margin: 0;
2736 | padding: 10px;
2737 | }
2738 |
2739 | #content .signatures > li {
2740 | padding-bottom: 0;
2741 | }
2742 |
2743 | #content .signature > ul {
2744 | margin: 0;
2745 | }
2746 |
2747 | .signatures h4 {
2748 | font-size: 16px;
2749 | letter-spacing: 0;
2750 | padding: 8px 10px;
2751 | margin: -10px -10px 0;
2752 | color: #fff;
2753 | text-shadow: 0 1px 0 #444;
2754 | }
2755 |
2756 | .signature:first-child h4 {
2757 | border-radius: 3px 3px 0 0;
2758 | }
2759 |
2760 | #content .signature h4 a {
2761 | color: inherit;
2762 | text-decoration: none;
2763 | }
2764 |
2765 | .signature h4 .icon-link {
2766 | margin-right: 0.5em;
2767 | }
2768 |
2769 | .signature .event-properties {
2770 | margin: 15px 0 0 0;
2771 | }
2772 |
2773 | .argument {
2774 | margin-top: 1em;
2775 | }
2776 |
2777 | #options, #methods, #extension-points, #events, #quick-nav {
2778 | border: 1px solid #CCC;
2779 | margin: 0 15px 15px;
2780 | padding: 10px;
2781 | overflow: auto;
2782 | }
2783 |
2784 | #options header h2, #methods header h2, #extension-points header h2, #events header h2, #quick-nav h2 {
2785 | background: #cccccc; /* Old browsers */
2786 | background: -webkit-linear-gradient(top, #ffffff 0%,#eeeeee 17%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
2787 | background: linear-gradient(to bottom, #ffffff 0%,#eeeeee 17%,#cccccc 100%); /* W3C */
2788 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
2789 | margin: -10px -10px 10px -10px;
2790 | padding: 10px;
2791 | }
2792 |
2793 | #quick-nav h2 a {
2794 | float: right;
2795 | font-size: 80%;
2796 | padding-left: 10px;
2797 | }
2798 |
2799 | .quick-nav-section {
2800 | width: 33%;
2801 | float: left;
2802 | }
2803 |
2804 | #methods .api-item li,
2805 | #extension-points .api-item li,
2806 | #events .api-item li {
2807 | margin-bottom: 1em;
2808 | }
2809 |
2810 | #methods .api-item li ul,
2811 | #extension-points .api-item li ul,
2812 | #events .api-item li ul {
2813 | list-style: none;
2814 | }
2815 |
2816 | .version-details {
2817 | font-weight: bold;
2818 | }
2819 |
2820 | .section-title .version-details,
2821 | .name .version-details {
2822 | float: right;
2823 | clear: right;
2824 | font-size: 14px;
2825 | color: #fff;
2826 | }
2827 |
2828 | .api-item {
2829 | padding: 20px 10px;
2830 | }
2831 | .signature li,
2832 | .api-item {
2833 | border-top: 1px solid #CCC;
2834 | }
2835 |
2836 | .signature li:first-child,
2837 | .api-item.first-item {
2838 | border-top: none;
2839 | padding-top: 10px;
2840 | }
2841 |
2842 | .option-type {
2843 | font-size: 16px;
2844 | font-weight: normal;
2845 | color: #333;
2846 | float: right;
2847 | }
2848 |
2849 | #options .default {
2850 | text-align: right;
2851 | font-size: 13px;
2852 | margin-top: -10px;
2853 | }
2854 |
2855 | .desc {
2856 | font-size: 16px;
2857 | padding: 5px 15px 0;
2858 | color: #666;
2859 | font-style: italic;
2860 | }
2861 |
2862 | .desc strong {
2863 | color: #444;
2864 | font-style: normal;
2865 | }
2866 |
2867 | .entry-summary p {
2868 | margin: 0;
2869 | }
2870 |
2871 | .warning, .note {
2872 | padding: 0.5em 1em;
2873 | margin: 1em;
2874 | border-radius: 5px;
2875 | }
2876 |
2877 | .warning {
2878 | background: #fff3a5;
2879 | }
2880 |
2881 | .note {
2882 | background: #428bca;
2883 | color: #fff;
2884 | }
2885 |
2886 | .note a {
2887 | color: #fff;
2888 | }
2889 |
2890 | /* Media Queries
2891 | ========================================================================== */
2892 |
2893 | @media only screen and (max-width: 1100px) {
2894 |
2895 | }
2896 |
2897 | @media only screen and (max-width: 940px) {
2898 |
2899 | }
2900 |
2901 | @media only screen and (max-width: 860px) {
2902 |
2903 | }
2904 |
2905 | @media only screen and (max-width: 768px) {
2906 | #global-nav ul.projects li.toggle-projects {
2907 | display: none;
2908 | }
2909 |
2910 | #sidebar,
2911 | .content-right #sidebar {
2912 | width: auto;
2913 | float: none;
2914 | clear: both;
2915 | margin: 0;
2916 | border-top: 1px solid #e7e7e7;
2917 | border-left: none;
2918 | border-image: none;
2919 | box-shadow: none;
2920 | background-image: none;
2921 | background-image: none;
2922 | background-image: none;
2923 | background-image: none;
2924 | background-image: none;
2925 | background-image: none;
2926 | }
2927 |
2928 | .content-full.full-width #content,
2929 | .content-right #content,
2930 | .content-left #content {
2931 | padding-left: 2%;
2932 | padding-right: 2%;
2933 | }
2934 |
2935 | #content {
2936 | width: 100%;
2937 | float: none;
2938 | clear: both;
2939 | }
2940 |
2941 | #banner-secondary {
2942 | margin-left: -15px;
2943 | margin-right: -15px;
2944 | }
2945 |
2946 | footer p.copyright,
2947 | footer ul.footer-site-links {
2948 | width: 100%;
2949 | text-align: center;
2950 | margin: 0 0 10px 0;
2951 | }
2952 | }
2953 |
2954 | @media only screen and (max-width: 600px) {
2955 | #global-nav ul.projects {
2956 | display: none;
2957 | }
2958 |
2959 | #global-nav nav ul.links {
2960 | float: left;
2961 | }
2962 |
2963 | #global-nav nav ul.links li {
2964 | font-size: 12px;
2965 | }
2966 |
2967 | #logo-events {
2968 | padding-top: 20px;
2969 | padding-bottom: 10px;
2970 | }
2971 |
2972 | #logo-events aside {
2973 | display: inline-block;
2974 | position: relative;
2975 | left: 50%;
2976 | margin-left: -200px;
2977 | float: none;
2978 | padding: 10px 0;
2979 | }
2980 |
2981 | #logo-events h2.logo {
2982 | float: none;
2983 | margin-left: auto;
2984 | margin-right: auto;
2985 | }
2986 |
2987 | nav#main {
2988 | background-color: rgba(0, 0, 0, 0.0);
2989 | border-radius: 10px 10px 0 0;
2990 | border-right: none;
2991 | border-left: none;
2992 | border-top: none;
2993 | box-shadow: none;
2994 | padding-top: 10px;
2995 | }
2996 |
2997 | nav#main .searchform {
2998 | display: block;
2999 | float: none;
3000 | width: 100%;
3001 | margin: 15px auto;
3002 | clear:both;
3003 | }
3004 |
3005 | nav#main ul{
3006 | width: auto !important;
3007 | text-align: left !important;
3008 | float: none;
3009 | margin: 0px;
3010 | padding: 0px;
3011 | }
3012 |
3013 | nav#main ul li, nav#main ul li a {
3014 | display: block;
3015 | text-align: left !important;
3016 | float: left;
3017 | margin-right: 0px;
3018 | padding: 0 4px 4px 0;
3019 | }
3020 |
3021 |
3022 | nav#main li a:hover,
3023 | nav#main li.current a {
3024 | background: none;
3025 | box-shadow: none;
3026 | border-radius: 4px;
3027 | border: 1px solid rgba(0,0,0,0.0);
3028 | }
3029 |
3030 | nav#main li a {
3031 | font-size: 14px;
3032 | }
3033 |
3034 | #content-wrapper {
3035 | border-top-left-radius: 10px;
3036 | border-top-right-radius: 10px;
3037 | }
3038 |
3039 | #banner-secondary {
3040 | border-top-left-radius: 9px;
3041 | border-top-right-radius: 9px;
3042 | margin-left: -10px;
3043 | margin-right: -10px;
3044 | }
3045 |
3046 | #banner-secondary h2 {
3047 | font-size: 35px;
3048 | line-height: 35px;
3049 | }
3050 |
3051 | #content h1 {
3052 | font-size: 26px;
3053 | line-height: 26px;
3054 | }
3055 |
3056 | #banner-secondary.large-banner h1,
3057 | #banner-secondary.large-banner h2 {
3058 | font-size: 36px;
3059 | line-height: 36px;
3060 | }
3061 |
3062 | #banner-secondary.large-banner p {
3063 | font-size: 22px;
3064 | padding: 0;
3065 | }
3066 |
3067 | footer .books li {
3068 | clear: both;
3069 | margin-bottom: 10px;
3070 | float: none;
3071 | margin-left: auto !important;
3072 | margin-right: auto;
3073 | text-align: center;
3074 | }
3075 |
3076 | footer .books li span {
3077 | display: block;
3078 | margin-left: auto;
3079 | margin-right: auto;
3080 | }
3081 | }
3082 |
3083 | @media only screen and (max-width: 480px) {
3084 |
3085 | #global-nav {
3086 | display: none;
3087 | }
3088 |
3089 | #logo-events aside {
3090 | width: 300px;
3091 | margin-left: -150px;
3092 | }
3093 |
3094 | #container {
3095 | border-top: none !important;
3096 | }
3097 |
3098 | .tinynav-container {
3099 | display: block;
3100 | }
3101 |
3102 | #menu-top {
3103 | display: none;
3104 | }
3105 |
3106 | .tinynav {
3107 | display: block;
3108 | width: 100%;
3109 | margin: 0 auto 15px;
3110 | position: relative;
3111 | top: 6px;
3112 | left: 0px;
3113 | }
3114 |
3115 | nav#main {
3116 | margin-top: 15px;
3117 | padding-top: 0;
3118 | }
3119 |
3120 | nav#main .searchform {
3121 | display: block;
3122 | float: none;
3123 | width: 100%;
3124 | margin: 15px auto;
3125 | }
3126 |
3127 | nav#main ul li, nav#main ul li a {
3128 | float: none;
3129 | padding: 6px 0px 6px 8px;
3130 | }
3131 |
3132 | .constrain,
3133 | #container {
3134 | padding-left: 10px;
3135 | padding-right: 10px;
3136 | }
3137 |
3138 | .content-full #content,
3139 | .content-full.full-width #content,
3140 | .content-right #content,
3141 | .content-left #content {
3142 | padding-left: 0;
3143 | padding-right: 0;
3144 | }
3145 |
3146 | #content-wrapper {
3147 | padding-left: 25px;
3148 | padding-right: 25px;
3149 | }
3150 |
3151 | #content pre {
3152 | margin-left: -25px;
3153 | margin-right: -25px;
3154 | }
3155 |
3156 | #content img.left,
3157 | #content figure.left,
3158 | #content img.right,
3159 | #content figure.right {
3160 | display: block;
3161 | width: 100%;
3162 | max-width: 100%;
3163 | margin-left: 0;
3164 | margin-right: 0;
3165 | }
3166 |
3167 | #banner-secondary {
3168 | margin-left: -25px;
3169 | margin-right: -25px;
3170 | }
3171 |
3172 | footer .footer-icon-links li a:before {
3173 | display: none;
3174 | }
3175 |
3176 | footer .footer-icon-links li:first-child {
3177 | margin-left: 0;
3178 | }
3179 |
3180 | footer .download > span {
3181 | white-space: normal;
3182 | }
3183 | }
3184 |
3185 | @media only screen and (-webkit-device-pixel-ratio: 2){
3186 | .jquery h2.logo a {
3187 | background: url(../images/logo-jquery@2x.png) no-repeat;
3188 | background-size: 243px 66px;
3189 | }
3190 |
3191 | .jquery-ui h2.logo a {
3192 | background: url(../images/logo-jquery-ui@2x.png) no-repeat;
3193 | background-size: 253px 66px;
3194 | }
3195 |
3196 | .jquery-mobile h2.logo a {
3197 | background: url(../images/logo-jquery-mobile@2x.png) no-repeat;
3198 | background-size: 268px 66px;
3199 | }
3200 |
3201 | .sizzlejs h2.logo a {
3202 | background: url(../images/logo-sizzle@2x.png) no-repeat;
3203 | background-size: 243px 66px;
3204 | }
3205 |
3206 | .qunitjs h2.logo a {
3207 | background: url(../images/logo-qunit@2x.png) no-repeat;
3208 | background-size: 243px 66px;
3209 | }
3210 |
3211 | .jquery-foundation h2.logo a {
3212 | background: url(../images/logo-jquery-foundation@2x.png) no-repeat;
3213 | background-size: 243px 66px;
3214 | }
3215 |
3216 | .jquery-events.jquery-foundation h2.logo a {
3217 | background: url(../images/logo-jquery-events@2x.png) no-repeat;
3218 | background-size: 243px 66px;
3219 | }
3220 | }
3221 |
3222 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5),
3223 | only screen and (min-resolution: 144dpi) {
3224 |
3225 | }
3226 |
3227 | /* Helper classes
3228 | ========================================================================== */
3229 |
3230 | .ir {
3231 | background-color: transparent;
3232 | border: 0;
3233 | overflow: hidden;
3234 | *text-indent: -9999px;
3235 | }
3236 |
3237 | .ir:before {
3238 | content: "";
3239 | display: block;
3240 | width: 0;
3241 | height: 100%;
3242 | }
3243 |
3244 | .hidden {
3245 | display: none !important;
3246 | visibility: hidden;
3247 | }
3248 |
3249 | .visuallyhidden {
3250 | border: 0;
3251 | clip: rect(0 0 0 0);
3252 | height: 1px;
3253 | margin: -1px;
3254 | overflow: hidden;
3255 | padding: 0;
3256 | position: absolute;
3257 | width: 1px;
3258 | }
3259 |
3260 | .visuallyhidden.focusable:active,
3261 | .visuallyhidden.focusable:focus {
3262 | clip: auto;
3263 | height: auto;
3264 | margin: 0;
3265 | overflow: visible;
3266 | position: static;
3267 | width: auto;
3268 | }
3269 |
3270 | .invisible {
3271 | visibility: hidden;
3272 | }
3273 |
3274 | .clearfix:before,
3275 | .clearfix:after {
3276 | content: " ";
3277 | display: table;
3278 | }
3279 |
3280 | .clearfix:after {
3281 | clear: both;
3282 | }
3283 |
3284 | .clearfix {
3285 | *zoom: 1;
3286 | }
3287 |
3288 | /* Print styles
3289 | ========================================================================== */
3290 |
3291 | @media print {
3292 | * {
3293 | background: transparent !important;
3294 | color: #000 !important; /* Black prints faster: h5bp.com/s */
3295 | box-shadow:none !important;
3296 | text-shadow: none !important;
3297 | }
3298 |
3299 | a,
3300 | a:visited {
3301 | text-decoration: underline;
3302 | }
3303 |
3304 | a[href]:after {
3305 | content: " (" attr(href) ")";
3306 | }
3307 |
3308 | abbr[title]:after {
3309 | content: " (" attr(title) ")";
3310 | }
3311 |
3312 | /*
3313 | * Don't show links for images, or javascript/internal links
3314 | */
3315 |
3316 | .ir a:after,
3317 | a[href^="javascript:"]:after,
3318 | a[href^="#"]:after {
3319 | content: "";
3320 | }
3321 |
3322 | pre,
3323 | blockquote {
3324 | border: 1px solid #999;
3325 | page-break-inside: avoid;
3326 | }
3327 |
3328 | thead {
3329 | display: table-header-group; /* h5bp.com/t */
3330 | }
3331 |
3332 | tr,
3333 | img {
3334 | page-break-inside: avoid;
3335 | }
3336 |
3337 | img {
3338 | max-width: 100% !important;
3339 | }
3340 |
3341 | @page {
3342 | margin: 0.5cm;
3343 | }
3344 |
3345 | p,
3346 | h2,
3347 | h3 {
3348 | orphans: 3;
3349 | widows: 3;
3350 | }
3351 |
3352 | h2,
3353 | h3 {
3354 | page-break-after: avoid;
3355 | }
3356 | }
3357 |
3358 | /* The Grid ----------------------
3359 | Based on Zurb Foundation's Grid
3360 | */
3361 | .row { width: 1240px; max-width: 100%; min-width: 768px; margin: 0 auto; }
3362 | .row .row { width: auto; max-width: none; min-width: 0; margin: 0 -25px; }
3363 | .row.collapse .column, .row.collapse .columns { padding: 0; }
3364 | .row .row { width: auto; max-width: none; min-width: 0; margin: 0 -25px; }
3365 | .row .row.collapse { margin: 0; }
3366 |
3367 | .column, .columns { float: left; min-height: 1px; padding: 0 25px; position: relative; }
3368 | .column.centered, .columns.centered { float: none; margin: 0 auto; }
3369 |
3370 | [class*="column"] + [class*="column"]:last-child { float: right; }
3371 |
3372 | [class*="column"] + [class*="column"].end { float: left; }
3373 |
3374 | .one, .row .one { width: 8.33333%; }
3375 |
3376 | .two, .row .two { width: 16.66667%; }
3377 |
3378 | .three, .row .three { width: 25%; }
3379 |
3380 | .four, .row .four { width: 33.33333%; }
3381 |
3382 | .five, .row .five { width: 41.66667%; }
3383 |
3384 | .six, .row .six { width: 50%; }
3385 |
3386 | .seven, .row .seven { width: 58.33333%; }
3387 |
3388 | .eight, .row .eight { width: 66.66667%; }
3389 |
3390 | .nine, .row .nine { width: 75%; }
3391 |
3392 | .ten, .row .ten { width: 83.33333%; }
3393 |
3394 | .eleven, .row .eleven { width: 91.66667%; }
3395 |
3396 | .twelve, .row .twelve { width: 100%; }
3397 |
3398 | .row .offset-by-one { margin-left: 8.33333%; }
3399 |
3400 | .row .offset-by-two { margin-left: 16.66667%; }
3401 |
3402 | .row .offset-by-three { margin-left: 25%; }
3403 |
3404 | .row .offset-by-four { margin-left: 33.33333%; }
3405 |
3406 | .row .offset-by-five { margin-left: 41.66667%; }
3407 |
3408 | .row .offset-by-six { margin-left: 50%; }
3409 |
3410 | .row .offset-by-seven { margin-left: 58.33333%; }
3411 |
3412 | .row .offset-by-eight { margin-left: 66.66667%; }
3413 |
3414 | .row .offset-by-nine { margin-left: 75%; }
3415 |
3416 | .row .offset-by-ten { margin-left: 83.33333%; }
3417 |
3418 | .push-two { left: 16.66667%; }
3419 |
3420 | .pull-two { right: 16.66667%; }
3421 |
3422 | .push-three { left: 25%; }
3423 |
3424 | .pull-three { right: 25%; }
3425 |
3426 | .push-four { left: 33.33333%; }
3427 |
3428 | .pull-four { right: 33.33333%; }
3429 |
3430 | .push-five { left: 41.66667%; }
3431 |
3432 | .pull-five { right: 41.66667%; }
3433 |
3434 | .push-six { left: 50%; }
3435 |
3436 | .pull-six { right: 50%; }
3437 |
3438 | .push-seven { left: 58.33333%; }
3439 |
3440 | .pull-seven { right: 58.33333%; }
3441 |
3442 | .push-eight { left: 66.66667%; }
3443 |
3444 | .pull-eight { right: 66.66667%; }
3445 |
3446 | .push-nine { left: 75%; }
3447 |
3448 | .pull-nine { right: 75%; }
3449 |
3450 | .push-ten { left: 83.33333%; }
3451 |
3452 | .pull-ten { right: 83.33333%; }
3453 |
3454 | img, object, embed { max-width: 100%; height: auto; }
3455 |
3456 | object, embed { height: 100%; }
3457 |
3458 | img { -ms-interpolation-mode: bicubic; }
3459 |
3460 | #map_canvas img, .map_canvas img { max-width: none!important; }
3461 |
3462 | /* Nicolas Gallagher's micro clearfix */
3463 | .row { *zoom: 1; }
3464 | .row:before, .row:after { content: ""; display: table; }
3465 | .row:after { clear: both; }
3466 |
3467 | /* Mobile Grid and Overrides ---------------------- */
3468 | @media only screen and (max-width: 767px) {
3469 | .row { width: auto; min-width: 0; margin-left: 0 !important; margin-right: 0 !important; }
3470 | .column, .columns { width: auto !important; float: none; padding-left: 0 !important; padding-right: 0 !important;
3471 | }
3472 | .column:last-child, .columns:last-child { float: none; }
3473 | [class*="column"] + [class*="column"]:last-child { float: none; }
3474 | .column:before, .columns:before, .column:after, .columns:after { content: ""; display: table; }
3475 | .column:after, .columns:after { clear: both; }
3476 | .offset-by-one, .offset-by-two, .offset-by-three, .offset-by-four, .offset-by-five, .offset-by-six, .offset-by-seven, .offset-by-eight, .offset-by-nine, .offset-by-ten { margin-left: 0 !important; }
3477 | .push-two, .push-three, .push-four, .push-five, .push-six, .push-seven, .push-eight, .push-nine, .push-ten { left: auto; }
3478 | .pull-two, .pull-three, .pull-four, .pull-five, .pull-six, .pull-seven, .pull-eight, .pull-nine, .pull-ten { right: auto; }
3479 | /* Mobile 4-column Grid */
3480 | .row .mobile-one { width: 25% !important; float: left; padding: 0 25px; }
3481 | .row .mobile-one:last-child { float: right; }
3482 | .row .mobile-one.end { float: left; }
3483 | .row.collapse .mobile-one { padding: 0; }
3484 | .row .mobile-two { width: 50% !important; float: left; padding: 0 25px; }
3485 | .row .mobile-two:last-child { float: right; }
3486 | .row .mobile-two.end { float: left; }
3487 | .row.collapse .mobile-two { padding: 0; }
3488 | .row .mobile-three { width: 75% !important; float: left; padding: 0 25px; }
3489 | .row .mobile-three:last-child { float: right; }
3490 | .row .mobile-three.end { float: left; }
3491 | .row.collapse .mobile-three { padding: 0; }
3492 | .row .mobile-four { width: 100% !important; float: left; padding: 0 25px; }
3493 | .row .mobile-four:last-child { float: right; }
3494 | .row .mobile-four.end { float: left; }
3495 | .row.collapse .mobile-four { padding: 0; }
3496 | .push-one-mobile { left: 25%; }
3497 | .pull-one-mobile { right: 25%; }
3498 | .push-two-mobile { left: 50%; }
3499 | .pull-two-mobile { right: 50%; }
3500 | .push-three-mobile { left: 75%; }
3501 | .pull-three-mobile { right: 75%; }
3502 | }
3503 |
3504 |
3505 | /* Block Grids ---------------------- */
3506 | /* These are 2-up, 3-up, 4-up and 5-up ULs, suited
3507 | for repeating blocks of content. Add 'mobile' to
3508 | them to switch them just like the layout grid
3509 | (one item per line) on phones
3510 |
3511 | For IE7/8 compatibility block-grid items need to be
3512 | the same height. You can optionally uncomment the
3513 | lines below to support arbitrary height, but know
3514 | that IE7/8 do not support :nth-child.
3515 | -------------------------------------------------- */
3516 | .block-grid, #content .block-grid { display: block; overflow: hidden; padding: 0; }
3517 | .block-grid > li, #content .block-grid > li { display: block; height: auto; float: left; }
3518 | .block-grid.one-up, #content .block-grid.one-up { margin: 0; }
3519 | .block-grid.one-up > li, #content .block-grid.one-up > li { width: 100%; padding: 0 0 15px; }
3520 | .block-grid.two-up, #content .block-grid.two-up { margin: 0 -15px; }
3521 | .block-grid.two-up > li, #content .block-grid.two-up > li { width: 50%; padding: 0 15px 15px; }
3522 | .block-grid.two-up > li:nth-child(2n+1), #content .block-grid.two-up > li:nth-child(2n+1) { clear: both; }
3523 | .block-grid.three-up, #content .block-grid.three-up { margin: 0 -12px; }
3524 | .block-grid.three-up > li, #content .block-grid.three-up > li { width: 33.33%; padding: 0 12px 12px; }
3525 | .block-grid.three-up > li:nth-child(3n+1), #content .block-grid.three-up > li:nth-child(3n+1) { clear: both; }
3526 | .block-grid.four-up, #content .block-grid.four-up { margin: 0 -10px; }
3527 | .block-grid.four-up > li, #content .block-grid.four-up > li { width: 25%; padding: 0 10px 10px; }
3528 | .block-grid.four-up > li:nth-child(4n+1), #content .block-grid.four-up > li:nth-child(4n+1) { clear: both; }
3529 | .block-grid.five-up, #content .block-grid.five-up { margin: 0 -8px; }
3530 | .block-grid.five-up > li, #content .block-grid.five-up > li { width: 20%; padding: 0 8px 8px; }
3531 | .block-grid.five-up > li:nth-child(5n+1), #content .block-grid.five-up > li:nth-child(5n+1) { clear: both; }
3532 |
3533 | /* Mobile Block Grids */
3534 | @media only screen and (max-width: 767px) {
3535 | .block-grid.mobile > li { float: none !important; width: 100% !important; margin-left: 0 !important; }
3536 | .block-grid > li { clear: none !important; }
3537 | .block-grid.mobile-two-up > li { width: 50% !important; }
3538 | .block-grid.mobile-two-up > li:nth-child(2n+1) { clear: both; }
3539 | .block-grid.mobile-three-up > li { width: 33.33% !important; }
3540 | .block-grid.mobile-three-up > li:nth-child(3n+1) { clear: both !important; }
3541 | .block-grid.mobile-four-up > li { width: 25% !important; }
3542 | .block-grid.mobile-four-up > li:nth-child(4n+1) { clear: both; }
3543 | .block-grid.mobile-five-up > li:nth-child(5n+1) { clear: both; }
3544 | }
3545 |
3546 | /*
3547 | ColorBox Core Style:
3548 | The following CSS is consistent between example themes and should not be altered.
3549 | */
3550 | #colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
3551 | #cboxOverlay{position:fixed; width:100%; height:100%;}
3552 | #cboxMiddleLeft, #cboxBottomLeft{clear:left;}
3553 | #cboxContent{position:relative;}
3554 | #cboxLoadedContent{overflow:auto;}
3555 | #cboxTitle{margin:0;}
3556 | #cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
3557 | #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
3558 | .cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
3559 | .cboxIframe{width:100%; height:100%; display:block; border:0;}
3560 | #colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
3561 |
3562 | /*
3563 | User Style:
3564 | Change the following styles to modify the appearance of ColorBox. They are
3565 | ordered & tabbed in a way that represents the nesting of the generated HTML.
3566 | */
3567 | #cboxOverlay{background:url(../images/colorbox/overlay.png) repeat 0 0;}
3568 | #cboxTopLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -101px 0;}
3569 | #cboxTopRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -130px 0;}
3570 | #cboxBottomLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -101px -29px;}
3571 | #cboxBottomRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -130px -29px;}
3572 | #cboxMiddleLeft{width:21px; background:url(../images/colorbox/controls.png) left top repeat-y;}
3573 | #cboxMiddleRight{width:21px; background:url(../images/colorbox/controls.png) right top repeat-y;}
3574 | #cboxTopCenter{height:21px; background:url(../images/colorbox/border.png) 0 0 repeat-x;}
3575 | #cboxBottomCenter{height:21px; background:url(../images/colorbox/border.png) 0 -29px repeat-x;}
3576 | #cboxContent{background:#fff; overflow:hidden;}
3577 | .cboxIframe{background:#fff;}
3578 | #cboxError{padding:50px; border:1px solid #ccc;}
3579 | #cboxLoadedContent{margin-bottom:28px;}
3580 | #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
3581 | #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
3582 | #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
3583 | #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
3584 | #cboxPrevious:hover{background-position:-75px -25px;}
3585 | #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
3586 | #cboxNext:hover{background-position:-50px -25px;}
3587 | #cboxLoadingOverlay{background:url(../images/colorbox/loading_background.png) no-repeat center center;}
3588 | #cboxLoadingGraphic{background:url(../images/colorbox/loading.gif) no-repeat center center;}
3589 | #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
3590 | #cboxClose:hover{background-position:-25px -25px;}
3591 |
3592 | /*
3593 | The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
3594 | when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
3595 | See: http://jacklmoore.com/notes/ie-transparency-problems/
3596 | */
3597 | .cboxIE #cboxTopLeft,
3598 | .cboxIE #cboxTopCenter,
3599 | .cboxIE #cboxTopRight,
3600 | .cboxIE #cboxBottomLeft,
3601 | .cboxIE #cboxBottomCenter,
3602 | .cboxIE #cboxBottomRight,
3603 | .cboxIE #cboxMiddleLeft,
3604 | .cboxIE #cboxMiddleRight {
3605 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
3606 | }
3607 |
3608 |
3609 | /* Syntax Highlighting ---------------------- */
3610 |
3611 | pre, code {
3612 | font-family: "source-code-pro", Consolas, monospace !important;
3613 | word-spacing: 0;
3614 | }
3615 | pre code {
3616 | display: block; padding: 0.5em;
3617 | color: #333;
3618 | background: #f8f8ff
3619 | }
3620 |
3621 | pre .comment,
3622 | pre .template_comment,
3623 | pre .diff .header,
3624 | pre .javadoc {
3625 | color: #998;
3626 | font-style: italic
3627 | }
3628 |
3629 | pre .keyword,
3630 | pre .css .rule .keyword,
3631 | pre .winutils,
3632 | pre .javascript .title,
3633 | pre .nginx .title,
3634 | pre .subst,
3635 | pre .request,
3636 | pre .status {
3637 | color: #333;
3638 | font-weight: bold
3639 | }
3640 |
3641 | pre .number,
3642 | pre .hexcolor,
3643 | pre .ruby .constant {
3644 | color: #099;
3645 | }
3646 |
3647 | pre .string,
3648 | pre .tag .value,
3649 | pre .phpdoc,
3650 | pre .tex .formula {
3651 | color: #d14
3652 | }
3653 |
3654 | pre .title,
3655 | pre .id {
3656 | color: #900;
3657 | font-weight: bold
3658 | }
3659 |
3660 | pre .javascript .title,
3661 | pre .lisp .title,
3662 | pre .clojure .title,
3663 | pre .subst {
3664 | font-weight: normal
3665 | }
3666 |
3667 | pre .class .title,
3668 | pre .haskell .type,
3669 | pre .vhdl .literal,
3670 | pre .tex .command {
3671 | color: #458;
3672 | font-weight: bold
3673 | }
3674 |
3675 | pre .tag,
3676 | pre .tag .title,
3677 | pre .rules .property,
3678 | pre .django .tag .keyword {
3679 | color: #000080;
3680 | font-weight: normal
3681 | }
3682 |
3683 | pre .attribute,
3684 | pre .variable,
3685 | pre .lisp .body {
3686 | color: #008080
3687 | }
3688 |
3689 | pre .regexp {
3690 | color: #009926
3691 | }
3692 |
3693 | pre .class {
3694 | color: #458;
3695 | font-weight: bold
3696 | }
3697 |
3698 | pre .symbol,
3699 | pre .ruby .symbol .string,
3700 | pre .lisp .keyword,
3701 | pre .tex .special,
3702 | pre .prompt {
3703 | color: #990073
3704 | }
3705 |
3706 | pre .built_in,
3707 | pre .lisp .title,
3708 | pre .clojure .built_in {
3709 | color: #0086b3
3710 | }
3711 |
3712 | pre .preprocessor,
3713 | pre .pi,
3714 | pre .doctype,
3715 | pre .shebang,
3716 | pre .cdata {
3717 | color: #999;
3718 | font-weight: bold
3719 | }
3720 |
3721 | pre .deletion {
3722 | background: #fdd
3723 | }
3724 |
3725 | pre .addition {
3726 | background: #dfd
3727 | }
3728 |
3729 | pre .diff .change {
3730 | background: #0086b3
3731 | }
3732 |
3733 | pre .chunk {
3734 | color: #aaa
3735 | }
3736 |
3737 | .syntaxhighlighter a,
3738 | .syntaxhighlighter div,
3739 | .syntaxhighlighter pre,
3740 | .syntaxhighlighter code,
3741 | .syntaxhighlighter table,
3742 | .syntaxhighlighter table td,
3743 | .syntaxhighlighter table tr,
3744 | .syntaxhighlighter table tbody,
3745 | .syntaxhighlighter table thead,
3746 | .syntaxhighlighter table caption,
3747 | .syntaxhighlighter textarea {
3748 | border-radius: 0 0 0 0 !important;
3749 | background: none !important;
3750 | bottom: auto !important;
3751 | float: none !important;
3752 | height: auto !important;
3753 | left: auto !important;
3754 | line-height: 1.1em !important;
3755 | margin: 0 !important;
3756 | outline: 0 !important;
3757 | overflow: visible !important;
3758 | padding: 0 !important;
3759 | position: static !important;
3760 | right: auto !important;
3761 | text-align: left !important;
3762 | top: auto !important;
3763 | vertical-align: baseline !important;
3764 | width: auto !important;
3765 | box-sizing: content-box !important;
3766 | font-family: "source-code-pro", Consolas, monospace !important;
3767 | font-weight: normal !important;
3768 | font-style: normal !important;
3769 | font-size: 1em !important;
3770 | min-height: inherit !important;
3771 | min-height: auto !important;
3772 | }
3773 | .syntaxhighlighter {
3774 | width: 100% !important;
3775 | margin: 1em 0 1em 0 !important;
3776 | padding: 1em 0;
3777 | position: relative !important;
3778 | overflow: auto !important;
3779 | font-size: 1em !important;
3780 | background: #eee;
3781 | }
3782 | .syntaxhighlighter.source {
3783 | overflow: hidden !important;
3784 | }
3785 | .syntaxhighlighter .line {
3786 | white-space: pre !important;
3787 | }
3788 | .syntaxhighlighter table {
3789 | width: 100% !important;
3790 | }
3791 | .syntaxhighlighter table caption {
3792 | text-align: left !important;
3793 | padding: .5em 0 0.5em 1em !important;
3794 | }
3795 | .syntaxhighlighter table td.code {
3796 | width: 100% !important;
3797 | }
3798 | .syntaxhighlighter table td.code .container {
3799 | position: relative !important;
3800 | }
3801 | .syntaxhighlighter table td.code .container textarea {
3802 | box-sizing: border-box !important;
3803 | position: absolute !important;
3804 | left: 0 !important;
3805 | top: 0 !important;
3806 | width: 100% !important;
3807 | height: 100% !important;
3808 | border: none !important;
3809 | background: white !important;
3810 | padding-left: 1em !important;
3811 | overflow: hidden !important;
3812 | white-space: pre !important;
3813 | }
3814 | .syntaxhighlighter table td.gutter .line {
3815 | text-align: right !important;
3816 | padding: 0 0.5em 0 1em !important;
3817 | }
3818 | .syntaxhighlighter table td.code .line {
3819 | padding: 0 0.5em !important;
3820 | }
3821 | .syntaxhighlighter.nogutter td.code .container textarea,
3822 | .syntaxhighlighter.nogutter td.code .line {
3823 | padding-left: 1em !important;
3824 | }
3825 |
3826 | .syntaxhighlighter table td.gutter {
3827 | border-right: 2px solid #999;
3828 | }
3829 |
3830 | .syntaxhighlighter {
3831 | border-radius: 5px;
3832 | }
3833 |
3834 | #content .syntaxhighlighter tr {
3835 | border-bottom: none;
3836 | }
3837 |
--------------------------------------------------------------------------------
/static/css/bootstrap.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.3.1 (http://getbootstrap.com)
3 | * Copyright 2011-2014 Twitter, Inc.
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 |
7 | /*!
8 | * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=bd4e795f72a3e9efe2bf)
9 | * Config saved to config.json and https://gist.github.com/bd4e795f72a3e9efe2bf
10 | */
11 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
12 | html {
13 | font-family: sans-serif;
14 | -ms-text-size-adjust: 100%;
15 | -webkit-text-size-adjust: 100%;
16 | }
17 | body {
18 | margin: 0;
19 | }
20 | article,
21 | aside,
22 | details,
23 | figcaption,
24 | figure,
25 | footer,
26 | header,
27 | hgroup,
28 | main,
29 | menu,
30 | nav,
31 | section,
32 | summary {
33 | display: block;
34 | }
35 | audio,
36 | canvas,
37 | progress,
38 | video {
39 | display: inline-block;
40 | vertical-align: baseline;
41 | }
42 | audio:not([controls]) {
43 | display: none;
44 | height: 0;
45 | }
46 | [hidden],
47 | template {
48 | display: none;
49 | }
50 | a {
51 | background-color: transparent;
52 | }
53 | a:active,
54 | a:hover {
55 | outline: 0;
56 | }
57 | abbr[title] {
58 | border-bottom: 1px dotted;
59 | }
60 | b,
61 | strong {
62 | font-weight: bold;
63 | }
64 | dfn {
65 | font-style: italic;
66 | }
67 | h1 {
68 | font-size: 2em;
69 | margin: 0.67em 0;
70 | }
71 | mark {
72 | background: #ff0;
73 | color: #000;
74 | }
75 | small {
76 | font-size: 80%;
77 | }
78 | sub,
79 | sup {
80 | font-size: 75%;
81 | line-height: 0;
82 | position: relative;
83 | vertical-align: baseline;
84 | }
85 | sup {
86 | top: -0.5em;
87 | }
88 | sub {
89 | bottom: -0.25em;
90 | }
91 | img {
92 | border: 0;
93 | }
94 | svg:not(:root) {
95 | overflow: hidden;
96 | }
97 | figure {
98 | margin: 1em 40px;
99 | }
100 | hr {
101 | -moz-box-sizing: content-box;
102 | -webkit-box-sizing: content-box;
103 | box-sizing: content-box;
104 | height: 0;
105 | }
106 | pre {
107 | overflow: auto;
108 | }
109 | code,
110 | kbd,
111 | pre,
112 | samp {
113 | font-family: monospace, monospace;
114 | font-size: 1em;
115 | }
116 | button,
117 | input,
118 | optgroup,
119 | select,
120 | textarea {
121 | color: inherit;
122 | font: inherit;
123 | margin: 0;
124 | }
125 | button {
126 | overflow: visible;
127 | }
128 | button,
129 | select {
130 | text-transform: none;
131 | }
132 | button,
133 | html input[type="button"],
134 | input[type="reset"],
135 | input[type="submit"] {
136 | -webkit-appearance: button;
137 | cursor: pointer;
138 | }
139 | button[disabled],
140 | html input[disabled] {
141 | cursor: default;
142 | }
143 | button::-moz-focus-inner,
144 | input::-moz-focus-inner {
145 | border: 0;
146 | padding: 0;
147 | }
148 | input {
149 | line-height: normal;
150 | }
151 | input[type="checkbox"],
152 | input[type="radio"] {
153 | -webkit-box-sizing: border-box;
154 | -moz-box-sizing: border-box;
155 | box-sizing: border-box;
156 | padding: 0;
157 | }
158 | input[type="number"]::-webkit-inner-spin-button,
159 | input[type="number"]::-webkit-outer-spin-button {
160 | height: auto;
161 | }
162 | input[type="search"] {
163 | -webkit-appearance: textfield;
164 | -moz-box-sizing: content-box;
165 | -webkit-box-sizing: content-box;
166 | box-sizing: content-box;
167 | }
168 | input[type="search"]::-webkit-search-cancel-button,
169 | input[type="search"]::-webkit-search-decoration {
170 | -webkit-appearance: none;
171 | }
172 | fieldset {
173 | border: 1px solid #c0c0c0;
174 | margin: 0 2px;
175 | padding: 0.35em 0.625em 0.75em;
176 | }
177 | legend {
178 | border: 0;
179 | padding: 0;
180 | }
181 | textarea {
182 | overflow: auto;
183 | }
184 | optgroup {
185 | font-weight: bold;
186 | }
187 | table {
188 | border-collapse: collapse;
189 | border-spacing: 0;
190 | }
191 | td,
192 | th {
193 | padding: 0;
194 | }
195 | * {
196 | -webkit-box-sizing: border-box;
197 | -moz-box-sizing: border-box;
198 | box-sizing: border-box;
199 | }
200 | *:before,
201 | *:after {
202 | -webkit-box-sizing: border-box;
203 | -moz-box-sizing: border-box;
204 | box-sizing: border-box;
205 | }
206 | html {
207 | font-size: 10px;
208 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
209 | }
210 | body {
211 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
212 | font-size: 14px;
213 | line-height: 1.42857143;
214 | color: #333333;
215 | background-color: #ffffff;
216 | }
217 | input,
218 | button,
219 | select,
220 | textarea {
221 | font-family: inherit;
222 | font-size: inherit;
223 | line-height: inherit;
224 | }
225 | a {
226 | color: #337ab7;
227 | text-decoration: none;
228 | }
229 | a:hover,
230 | a:focus {
231 | color: #23527c;
232 | text-decoration: underline;
233 | }
234 | a:focus {
235 | outline: thin dotted;
236 | outline: 5px auto -webkit-focus-ring-color;
237 | outline-offset: -2px;
238 | }
239 | figure {
240 | margin: 0;
241 | }
242 | img {
243 | vertical-align: middle;
244 | }
245 | .img-responsive {
246 | display: block;
247 | max-width: 100%;
248 | height: auto;
249 | }
250 | .img-rounded {
251 | border-radius: 6px;
252 | }
253 | .img-thumbnail {
254 | padding: 4px;
255 | line-height: 1.42857143;
256 | background-color: #ffffff;
257 | border: 1px solid #dddddd;
258 | border-radius: 4px;
259 | -webkit-transition: all 0.2s ease-in-out;
260 | -o-transition: all 0.2s ease-in-out;
261 | transition: all 0.2s ease-in-out;
262 | display: inline-block;
263 | max-width: 100%;
264 | height: auto;
265 | }
266 | .img-circle {
267 | border-radius: 50%;
268 | }
269 | hr {
270 | margin-top: 20px;
271 | margin-bottom: 20px;
272 | border: 0;
273 | border-top: 1px solid #eeeeee;
274 | }
275 | .sr-only {
276 | position: absolute;
277 | width: 1px;
278 | height: 1px;
279 | margin: -1px;
280 | padding: 0;
281 | overflow: hidden;
282 | clip: rect(0, 0, 0, 0);
283 | border: 0;
284 | }
285 | .sr-only-focusable:active,
286 | .sr-only-focusable:focus {
287 | position: static;
288 | width: auto;
289 | height: auto;
290 | margin: 0;
291 | overflow: visible;
292 | clip: auto;
293 | }
294 | h1,
295 | h2,
296 | h3,
297 | h4,
298 | h5,
299 | h6,
300 | .h1,
301 | .h2,
302 | .h3,
303 | .h4,
304 | .h5,
305 | .h6 {
306 | font-family: inherit;
307 | font-weight: 500;
308 | line-height: 1.1;
309 | color: inherit;
310 | }
311 | h1 small,
312 | h2 small,
313 | h3 small,
314 | h4 small,
315 | h5 small,
316 | h6 small,
317 | .h1 small,
318 | .h2 small,
319 | .h3 small,
320 | .h4 small,
321 | .h5 small,
322 | .h6 small,
323 | h1 .small,
324 | h2 .small,
325 | h3 .small,
326 | h4 .small,
327 | h5 .small,
328 | h6 .small,
329 | .h1 .small,
330 | .h2 .small,
331 | .h3 .small,
332 | .h4 .small,
333 | .h5 .small,
334 | .h6 .small {
335 | font-weight: normal;
336 | line-height: 1;
337 | color: #777777;
338 | }
339 | h1,
340 | .h1,
341 | h2,
342 | .h2,
343 | h3,
344 | .h3 {
345 | margin-top: 20px;
346 | margin-bottom: 10px;
347 | }
348 | h1 small,
349 | .h1 small,
350 | h2 small,
351 | .h2 small,
352 | h3 small,
353 | .h3 small,
354 | h1 .small,
355 | .h1 .small,
356 | h2 .small,
357 | .h2 .small,
358 | h3 .small,
359 | .h3 .small {
360 | font-size: 65%;
361 | }
362 | h4,
363 | .h4,
364 | h5,
365 | .h5,
366 | h6,
367 | .h6 {
368 | margin-top: 10px;
369 | margin-bottom: 10px;
370 | }
371 | h4 small,
372 | .h4 small,
373 | h5 small,
374 | .h5 small,
375 | h6 small,
376 | .h6 small,
377 | h4 .small,
378 | .h4 .small,
379 | h5 .small,
380 | .h5 .small,
381 | h6 .small,
382 | .h6 .small {
383 | font-size: 75%;
384 | }
385 | h1,
386 | .h1 {
387 | font-size: 36px;
388 | }
389 | h2,
390 | .h2 {
391 | font-size: 30px;
392 | }
393 | h3,
394 | .h3 {
395 | font-size: 24px;
396 | }
397 | h4,
398 | .h4 {
399 | font-size: 18px;
400 | }
401 | h5,
402 | .h5 {
403 | font-size: 14px;
404 | }
405 | h6,
406 | .h6 {
407 | font-size: 12px;
408 | }
409 | p {
410 | margin: 0 0 10px;
411 | }
412 | .lead {
413 | margin-bottom: 20px;
414 | font-size: 16px;
415 | font-weight: 300;
416 | line-height: 1.4;
417 | }
418 | @media (min-width: 768px) {
419 | .lead {
420 | font-size: 21px;
421 | }
422 | }
423 | small,
424 | .small {
425 | font-size: 85%;
426 | }
427 | mark,
428 | .mark {
429 | background-color: #fcf8e3;
430 | padding: .2em;
431 | }
432 | .text-left {
433 | text-align: left;
434 | }
435 | .text-right {
436 | text-align: right;
437 | }
438 | .text-center {
439 | text-align: center;
440 | }
441 | .text-justify {
442 | text-align: justify;
443 | }
444 | .text-nowrap {
445 | white-space: nowrap;
446 | }
447 | .text-lowercase {
448 | text-transform: lowercase;
449 | }
450 | .text-uppercase {
451 | text-transform: uppercase;
452 | }
453 | .text-capitalize {
454 | text-transform: capitalize;
455 | }
456 | .text-muted {
457 | color: #777777;
458 | }
459 | .text-primary {
460 | color: #337ab7;
461 | }
462 | a.text-primary:hover {
463 | color: #286090;
464 | }
465 | .text-success {
466 | color: #3c763d;
467 | }
468 | a.text-success:hover {
469 | color: #2b542c;
470 | }
471 | .text-info {
472 | color: #31708f;
473 | }
474 | a.text-info:hover {
475 | color: #245269;
476 | }
477 | .text-warning {
478 | color: #8a6d3b;
479 | }
480 | a.text-warning:hover {
481 | color: #66512c;
482 | }
483 | .text-danger {
484 | color: #a94442;
485 | }
486 | a.text-danger:hover {
487 | color: #843534;
488 | }
489 | .bg-primary {
490 | color: #fff;
491 | background-color: #337ab7;
492 | }
493 | a.bg-primary:hover {
494 | background-color: #286090;
495 | }
496 | .bg-success {
497 | background-color: #dff0d8;
498 | }
499 | a.bg-success:hover {
500 | background-color: #c1e2b3;
501 | }
502 | .bg-info {
503 | background-color: #d9edf7;
504 | }
505 | a.bg-info:hover {
506 | background-color: #afd9ee;
507 | }
508 | .bg-warning {
509 | background-color: #fcf8e3;
510 | }
511 | a.bg-warning:hover {
512 | background-color: #f7ecb5;
513 | }
514 | .bg-danger {
515 | background-color: #f2dede;
516 | }
517 | a.bg-danger:hover {
518 | background-color: #e4b9b9;
519 | }
520 | .page-header {
521 | padding-bottom: 9px;
522 | margin: 40px 0 20px;
523 | border-bottom: 1px solid #eeeeee;
524 | }
525 | ul,
526 | ol {
527 | margin-top: 0;
528 | margin-bottom: 10px;
529 | }
530 | ul ul,
531 | ol ul,
532 | ul ol,
533 | ol ol {
534 | margin-bottom: 0;
535 | }
536 | .list-unstyled {
537 | padding-left: 0;
538 | list-style: none;
539 | }
540 | .list-inline {
541 | padding-left: 0;
542 | list-style: none;
543 | margin-left: -5px;
544 | }
545 | .list-inline > li {
546 | display: inline-block;
547 | padding-left: 5px;
548 | padding-right: 5px;
549 | }
550 | dl {
551 | margin-top: 0;
552 | margin-bottom: 20px;
553 | }
554 | dt,
555 | dd {
556 | line-height: 1.42857143;
557 | }
558 | dt {
559 | font-weight: bold;
560 | }
561 | dd {
562 | margin-left: 0;
563 | }
564 | @media (min-width: 768px) {
565 | .dl-horizontal dt {
566 | float: left;
567 | width: 160px;
568 | clear: left;
569 | text-align: right;
570 | overflow: hidden;
571 | text-overflow: ellipsis;
572 | white-space: nowrap;
573 | }
574 | .dl-horizontal dd {
575 | margin-left: 180px;
576 | }
577 | }
578 | abbr[title],
579 | abbr[data-original-title] {
580 | cursor: help;
581 | border-bottom: 1px dotted #777777;
582 | }
583 | .initialism {
584 | font-size: 90%;
585 | text-transform: uppercase;
586 | }
587 | blockquote {
588 | padding: 10px 20px;
589 | margin: 0 0 20px;
590 | font-size: 17.5px;
591 | border-left: 5px solid #eeeeee;
592 | }
593 | blockquote p:last-child,
594 | blockquote ul:last-child,
595 | blockquote ol:last-child {
596 | margin-bottom: 0;
597 | }
598 | blockquote footer,
599 | blockquote small,
600 | blockquote .small {
601 | display: block;
602 | font-size: 80%;
603 | line-height: 1.42857143;
604 | color: #777777;
605 | }
606 | blockquote footer:before,
607 | blockquote small:before,
608 | blockquote .small:before {
609 | content: '\2014 \00A0';
610 | }
611 | .blockquote-reverse,
612 | blockquote.pull-right {
613 | padding-right: 15px;
614 | padding-left: 0;
615 | border-right: 5px solid #eeeeee;
616 | border-left: 0;
617 | text-align: right;
618 | }
619 | .blockquote-reverse footer:before,
620 | blockquote.pull-right footer:before,
621 | .blockquote-reverse small:before,
622 | blockquote.pull-right small:before,
623 | .blockquote-reverse .small:before,
624 | blockquote.pull-right .small:before {
625 | content: '';
626 | }
627 | .blockquote-reverse footer:after,
628 | blockquote.pull-right footer:after,
629 | .blockquote-reverse small:after,
630 | blockquote.pull-right small:after,
631 | .blockquote-reverse .small:after,
632 | blockquote.pull-right .small:after {
633 | content: '\00A0 \2014';
634 | }
635 | address {
636 | margin-bottom: 20px;
637 | font-style: normal;
638 | line-height: 1.42857143;
639 | }
640 | .container {
641 | margin-right: auto;
642 | margin-left: auto;
643 | padding-left: 15px;
644 | padding-right: 15px;
645 | }
646 | @media (min-width: 768px) {
647 | .container {
648 | width: 750px;
649 | }
650 | }
651 | @media (min-width: 992px) {
652 | .container {
653 | width: 970px;
654 | }
655 | }
656 | @media (min-width: 1200px) {
657 | .container {
658 | width: 1170px;
659 | }
660 | }
661 | .container-fluid {
662 | margin-right: auto;
663 | margin-left: auto;
664 | padding-left: 15px;
665 | padding-right: 15px;
666 | }
667 | .row {
668 | margin-left: -15px;
669 | margin-right: -15px;
670 | }
671 | .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
672 | position: relative;
673 | min-height: 1px;
674 | padding-left: 15px;
675 | padding-right: 15px;
676 | }
677 | .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
678 | float: left;
679 | }
680 | .col-xs-12 {
681 | width: 100%;
682 | }
683 | .col-xs-11 {
684 | width: 91.66666667%;
685 | }
686 | .col-xs-10 {
687 | width: 83.33333333%;
688 | }
689 | .col-xs-9 {
690 | width: 75%;
691 | }
692 | .col-xs-8 {
693 | width: 66.66666667%;
694 | }
695 | .col-xs-7 {
696 | width: 58.33333333%;
697 | }
698 | .col-xs-6 {
699 | width: 50%;
700 | }
701 | .col-xs-5 {
702 | width: 41.66666667%;
703 | }
704 | .col-xs-4 {
705 | width: 33.33333333%;
706 | }
707 | .col-xs-3 {
708 | width: 25%;
709 | }
710 | .col-xs-2 {
711 | width: 16.66666667%;
712 | }
713 | .col-xs-1 {
714 | width: 8.33333333%;
715 | }
716 | .col-xs-pull-12 {
717 | right: 100%;
718 | }
719 | .col-xs-pull-11 {
720 | right: 91.66666667%;
721 | }
722 | .col-xs-pull-10 {
723 | right: 83.33333333%;
724 | }
725 | .col-xs-pull-9 {
726 | right: 75%;
727 | }
728 | .col-xs-pull-8 {
729 | right: 66.66666667%;
730 | }
731 | .col-xs-pull-7 {
732 | right: 58.33333333%;
733 | }
734 | .col-xs-pull-6 {
735 | right: 50%;
736 | }
737 | .col-xs-pull-5 {
738 | right: 41.66666667%;
739 | }
740 | .col-xs-pull-4 {
741 | right: 33.33333333%;
742 | }
743 | .col-xs-pull-3 {
744 | right: 25%;
745 | }
746 | .col-xs-pull-2 {
747 | right: 16.66666667%;
748 | }
749 | .col-xs-pull-1 {
750 | right: 8.33333333%;
751 | }
752 | .col-xs-pull-0 {
753 | right: auto;
754 | }
755 | .col-xs-push-12 {
756 | left: 100%;
757 | }
758 | .col-xs-push-11 {
759 | left: 91.66666667%;
760 | }
761 | .col-xs-push-10 {
762 | left: 83.33333333%;
763 | }
764 | .col-xs-push-9 {
765 | left: 75%;
766 | }
767 | .col-xs-push-8 {
768 | left: 66.66666667%;
769 | }
770 | .col-xs-push-7 {
771 | left: 58.33333333%;
772 | }
773 | .col-xs-push-6 {
774 | left: 50%;
775 | }
776 | .col-xs-push-5 {
777 | left: 41.66666667%;
778 | }
779 | .col-xs-push-4 {
780 | left: 33.33333333%;
781 | }
782 | .col-xs-push-3 {
783 | left: 25%;
784 | }
785 | .col-xs-push-2 {
786 | left: 16.66666667%;
787 | }
788 | .col-xs-push-1 {
789 | left: 8.33333333%;
790 | }
791 | .col-xs-push-0 {
792 | left: auto;
793 | }
794 | .col-xs-offset-12 {
795 | margin-left: 100%;
796 | }
797 | .col-xs-offset-11 {
798 | margin-left: 91.66666667%;
799 | }
800 | .col-xs-offset-10 {
801 | margin-left: 83.33333333%;
802 | }
803 | .col-xs-offset-9 {
804 | margin-left: 75%;
805 | }
806 | .col-xs-offset-8 {
807 | margin-left: 66.66666667%;
808 | }
809 | .col-xs-offset-7 {
810 | margin-left: 58.33333333%;
811 | }
812 | .col-xs-offset-6 {
813 | margin-left: 50%;
814 | }
815 | .col-xs-offset-5 {
816 | margin-left: 41.66666667%;
817 | }
818 | .col-xs-offset-4 {
819 | margin-left: 33.33333333%;
820 | }
821 | .col-xs-offset-3 {
822 | margin-left: 25%;
823 | }
824 | .col-xs-offset-2 {
825 | margin-left: 16.66666667%;
826 | }
827 | .col-xs-offset-1 {
828 | margin-left: 8.33333333%;
829 | }
830 | .col-xs-offset-0 {
831 | margin-left: 0%;
832 | }
833 | @media (min-width: 768px) {
834 | .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
835 | float: left;
836 | }
837 | .col-sm-12 {
838 | width: 100%;
839 | }
840 | .col-sm-11 {
841 | width: 91.66666667%;
842 | }
843 | .col-sm-10 {
844 | width: 83.33333333%;
845 | }
846 | .col-sm-9 {
847 | width: 75%;
848 | }
849 | .col-sm-8 {
850 | width: 66.66666667%;
851 | }
852 | .col-sm-7 {
853 | width: 58.33333333%;
854 | }
855 | .col-sm-6 {
856 | width: 50%;
857 | }
858 | .col-sm-5 {
859 | width: 41.66666667%;
860 | }
861 | .col-sm-4 {
862 | width: 33.33333333%;
863 | }
864 | .col-sm-3 {
865 | width: 25%;
866 | }
867 | .col-sm-2 {
868 | width: 16.66666667%;
869 | }
870 | .col-sm-1 {
871 | width: 8.33333333%;
872 | }
873 | .col-sm-pull-12 {
874 | right: 100%;
875 | }
876 | .col-sm-pull-11 {
877 | right: 91.66666667%;
878 | }
879 | .col-sm-pull-10 {
880 | right: 83.33333333%;
881 | }
882 | .col-sm-pull-9 {
883 | right: 75%;
884 | }
885 | .col-sm-pull-8 {
886 | right: 66.66666667%;
887 | }
888 | .col-sm-pull-7 {
889 | right: 58.33333333%;
890 | }
891 | .col-sm-pull-6 {
892 | right: 50%;
893 | }
894 | .col-sm-pull-5 {
895 | right: 41.66666667%;
896 | }
897 | .col-sm-pull-4 {
898 | right: 33.33333333%;
899 | }
900 | .col-sm-pull-3 {
901 | right: 25%;
902 | }
903 | .col-sm-pull-2 {
904 | right: 16.66666667%;
905 | }
906 | .col-sm-pull-1 {
907 | right: 8.33333333%;
908 | }
909 | .col-sm-pull-0 {
910 | right: auto;
911 | }
912 | .col-sm-push-12 {
913 | left: 100%;
914 | }
915 | .col-sm-push-11 {
916 | left: 91.66666667%;
917 | }
918 | .col-sm-push-10 {
919 | left: 83.33333333%;
920 | }
921 | .col-sm-push-9 {
922 | left: 75%;
923 | }
924 | .col-sm-push-8 {
925 | left: 66.66666667%;
926 | }
927 | .col-sm-push-7 {
928 | left: 58.33333333%;
929 | }
930 | .col-sm-push-6 {
931 | left: 50%;
932 | }
933 | .col-sm-push-5 {
934 | left: 41.66666667%;
935 | }
936 | .col-sm-push-4 {
937 | left: 33.33333333%;
938 | }
939 | .col-sm-push-3 {
940 | left: 25%;
941 | }
942 | .col-sm-push-2 {
943 | left: 16.66666667%;
944 | }
945 | .col-sm-push-1 {
946 | left: 8.33333333%;
947 | }
948 | .col-sm-push-0 {
949 | left: auto;
950 | }
951 | .col-sm-offset-12 {
952 | margin-left: 100%;
953 | }
954 | .col-sm-offset-11 {
955 | margin-left: 91.66666667%;
956 | }
957 | .col-sm-offset-10 {
958 | margin-left: 83.33333333%;
959 | }
960 | .col-sm-offset-9 {
961 | margin-left: 75%;
962 | }
963 | .col-sm-offset-8 {
964 | margin-left: 66.66666667%;
965 | }
966 | .col-sm-offset-7 {
967 | margin-left: 58.33333333%;
968 | }
969 | .col-sm-offset-6 {
970 | margin-left: 50%;
971 | }
972 | .col-sm-offset-5 {
973 | margin-left: 41.66666667%;
974 | }
975 | .col-sm-offset-4 {
976 | margin-left: 33.33333333%;
977 | }
978 | .col-sm-offset-3 {
979 | margin-left: 25%;
980 | }
981 | .col-sm-offset-2 {
982 | margin-left: 16.66666667%;
983 | }
984 | .col-sm-offset-1 {
985 | margin-left: 8.33333333%;
986 | }
987 | .col-sm-offset-0 {
988 | margin-left: 0%;
989 | }
990 | }
991 | @media (min-width: 992px) {
992 | .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
993 | float: left;
994 | }
995 | .col-md-12 {
996 | width: 100%;
997 | }
998 | .col-md-11 {
999 | width: 91.66666667%;
1000 | }
1001 | .col-md-10 {
1002 | width: 83.33333333%;
1003 | }
1004 | .col-md-9 {
1005 | width: 75%;
1006 | }
1007 | .col-md-8 {
1008 | width: 66.66666667%;
1009 | }
1010 | .col-md-7 {
1011 | width: 58.33333333%;
1012 | }
1013 | .col-md-6 {
1014 | width: 50%;
1015 | }
1016 | .col-md-5 {
1017 | width: 41.66666667%;
1018 | }
1019 | .col-md-4 {
1020 | width: 33.33333333%;
1021 | }
1022 | .col-md-3 {
1023 | width: 25%;
1024 | }
1025 | .col-md-2 {
1026 | width: 16.66666667%;
1027 | }
1028 | .col-md-1 {
1029 | width: 8.33333333%;
1030 | }
1031 | .col-md-pull-12 {
1032 | right: 100%;
1033 | }
1034 | .col-md-pull-11 {
1035 | right: 91.66666667%;
1036 | }
1037 | .col-md-pull-10 {
1038 | right: 83.33333333%;
1039 | }
1040 | .col-md-pull-9 {
1041 | right: 75%;
1042 | }
1043 | .col-md-pull-8 {
1044 | right: 66.66666667%;
1045 | }
1046 | .col-md-pull-7 {
1047 | right: 58.33333333%;
1048 | }
1049 | .col-md-pull-6 {
1050 | right: 50%;
1051 | }
1052 | .col-md-pull-5 {
1053 | right: 41.66666667%;
1054 | }
1055 | .col-md-pull-4 {
1056 | right: 33.33333333%;
1057 | }
1058 | .col-md-pull-3 {
1059 | right: 25%;
1060 | }
1061 | .col-md-pull-2 {
1062 | right: 16.66666667%;
1063 | }
1064 | .col-md-pull-1 {
1065 | right: 8.33333333%;
1066 | }
1067 | .col-md-pull-0 {
1068 | right: auto;
1069 | }
1070 | .col-md-push-12 {
1071 | left: 100%;
1072 | }
1073 | .col-md-push-11 {
1074 | left: 91.66666667%;
1075 | }
1076 | .col-md-push-10 {
1077 | left: 83.33333333%;
1078 | }
1079 | .col-md-push-9 {
1080 | left: 75%;
1081 | }
1082 | .col-md-push-8 {
1083 | left: 66.66666667%;
1084 | }
1085 | .col-md-push-7 {
1086 | left: 58.33333333%;
1087 | }
1088 | .col-md-push-6 {
1089 | left: 50%;
1090 | }
1091 | .col-md-push-5 {
1092 | left: 41.66666667%;
1093 | }
1094 | .col-md-push-4 {
1095 | left: 33.33333333%;
1096 | }
1097 | .col-md-push-3 {
1098 | left: 25%;
1099 | }
1100 | .col-md-push-2 {
1101 | left: 16.66666667%;
1102 | }
1103 | .col-md-push-1 {
1104 | left: 8.33333333%;
1105 | }
1106 | .col-md-push-0 {
1107 | left: auto;
1108 | }
1109 | .col-md-offset-12 {
1110 | margin-left: 100%;
1111 | }
1112 | .col-md-offset-11 {
1113 | margin-left: 91.66666667%;
1114 | }
1115 | .col-md-offset-10 {
1116 | margin-left: 83.33333333%;
1117 | }
1118 | .col-md-offset-9 {
1119 | margin-left: 75%;
1120 | }
1121 | .col-md-offset-8 {
1122 | margin-left: 66.66666667%;
1123 | }
1124 | .col-md-offset-7 {
1125 | margin-left: 58.33333333%;
1126 | }
1127 | .col-md-offset-6 {
1128 | margin-left: 50%;
1129 | }
1130 | .col-md-offset-5 {
1131 | margin-left: 41.66666667%;
1132 | }
1133 | .col-md-offset-4 {
1134 | margin-left: 33.33333333%;
1135 | }
1136 | .col-md-offset-3 {
1137 | margin-left: 25%;
1138 | }
1139 | .col-md-offset-2 {
1140 | margin-left: 16.66666667%;
1141 | }
1142 | .col-md-offset-1 {
1143 | margin-left: 8.33333333%;
1144 | }
1145 | .col-md-offset-0 {
1146 | margin-left: 0%;
1147 | }
1148 | }
1149 | @media (min-width: 1200px) {
1150 | .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
1151 | float: left;
1152 | }
1153 | .col-lg-12 {
1154 | width: 100%;
1155 | }
1156 | .col-lg-11 {
1157 | width: 91.66666667%;
1158 | }
1159 | .col-lg-10 {
1160 | width: 83.33333333%;
1161 | }
1162 | .col-lg-9 {
1163 | width: 75%;
1164 | }
1165 | .col-lg-8 {
1166 | width: 66.66666667%;
1167 | }
1168 | .col-lg-7 {
1169 | width: 58.33333333%;
1170 | }
1171 | .col-lg-6 {
1172 | width: 50%;
1173 | }
1174 | .col-lg-5 {
1175 | width: 41.66666667%;
1176 | }
1177 | .col-lg-4 {
1178 | width: 33.33333333%;
1179 | }
1180 | .col-lg-3 {
1181 | width: 25%;
1182 | }
1183 | .col-lg-2 {
1184 | width: 16.66666667%;
1185 | }
1186 | .col-lg-1 {
1187 | width: 8.33333333%;
1188 | }
1189 | .col-lg-pull-12 {
1190 | right: 100%;
1191 | }
1192 | .col-lg-pull-11 {
1193 | right: 91.66666667%;
1194 | }
1195 | .col-lg-pull-10 {
1196 | right: 83.33333333%;
1197 | }
1198 | .col-lg-pull-9 {
1199 | right: 75%;
1200 | }
1201 | .col-lg-pull-8 {
1202 | right: 66.66666667%;
1203 | }
1204 | .col-lg-pull-7 {
1205 | right: 58.33333333%;
1206 | }
1207 | .col-lg-pull-6 {
1208 | right: 50%;
1209 | }
1210 | .col-lg-pull-5 {
1211 | right: 41.66666667%;
1212 | }
1213 | .col-lg-pull-4 {
1214 | right: 33.33333333%;
1215 | }
1216 | .col-lg-pull-3 {
1217 | right: 25%;
1218 | }
1219 | .col-lg-pull-2 {
1220 | right: 16.66666667%;
1221 | }
1222 | .col-lg-pull-1 {
1223 | right: 8.33333333%;
1224 | }
1225 | .col-lg-pull-0 {
1226 | right: auto;
1227 | }
1228 | .col-lg-push-12 {
1229 | left: 100%;
1230 | }
1231 | .col-lg-push-11 {
1232 | left: 91.66666667%;
1233 | }
1234 | .col-lg-push-10 {
1235 | left: 83.33333333%;
1236 | }
1237 | .col-lg-push-9 {
1238 | left: 75%;
1239 | }
1240 | .col-lg-push-8 {
1241 | left: 66.66666667%;
1242 | }
1243 | .col-lg-push-7 {
1244 | left: 58.33333333%;
1245 | }
1246 | .col-lg-push-6 {
1247 | left: 50%;
1248 | }
1249 | .col-lg-push-5 {
1250 | left: 41.66666667%;
1251 | }
1252 | .col-lg-push-4 {
1253 | left: 33.33333333%;
1254 | }
1255 | .col-lg-push-3 {
1256 | left: 25%;
1257 | }
1258 | .col-lg-push-2 {
1259 | left: 16.66666667%;
1260 | }
1261 | .col-lg-push-1 {
1262 | left: 8.33333333%;
1263 | }
1264 | .col-lg-push-0 {
1265 | left: auto;
1266 | }
1267 | .col-lg-offset-12 {
1268 | margin-left: 100%;
1269 | }
1270 | .col-lg-offset-11 {
1271 | margin-left: 91.66666667%;
1272 | }
1273 | .col-lg-offset-10 {
1274 | margin-left: 83.33333333%;
1275 | }
1276 | .col-lg-offset-9 {
1277 | margin-left: 75%;
1278 | }
1279 | .col-lg-offset-8 {
1280 | margin-left: 66.66666667%;
1281 | }
1282 | .col-lg-offset-7 {
1283 | margin-left: 58.33333333%;
1284 | }
1285 | .col-lg-offset-6 {
1286 | margin-left: 50%;
1287 | }
1288 | .col-lg-offset-5 {
1289 | margin-left: 41.66666667%;
1290 | }
1291 | .col-lg-offset-4 {
1292 | margin-left: 33.33333333%;
1293 | }
1294 | .col-lg-offset-3 {
1295 | margin-left: 25%;
1296 | }
1297 | .col-lg-offset-2 {
1298 | margin-left: 16.66666667%;
1299 | }
1300 | .col-lg-offset-1 {
1301 | margin-left: 8.33333333%;
1302 | }
1303 | .col-lg-offset-0 {
1304 | margin-left: 0%;
1305 | }
1306 | }
1307 | .modal-open {
1308 | overflow: hidden;
1309 | }
1310 | .modal {
1311 | display: none;
1312 | overflow: hidden;
1313 | position: fixed;
1314 | top: 0;
1315 | right: 0;
1316 | bottom: 0;
1317 | left: 0;
1318 | z-index: 1040;
1319 | -webkit-overflow-scrolling: touch;
1320 | outline: 0;
1321 | }
1322 | .modal.fade .modal-dialog {
1323 | -webkit-transform: translate(0, -25%);
1324 | -ms-transform: translate(0, -25%);
1325 | -o-transform: translate(0, -25%);
1326 | transform: translate(0, -25%);
1327 | -webkit-transition: -webkit-transform 0.3s ease-out;
1328 | -o-transition: -o-transform 0.3s ease-out;
1329 | transition: transform 0.3s ease-out;
1330 | }
1331 | .modal.in .modal-dialog {
1332 | -webkit-transform: translate(0, 0);
1333 | -ms-transform: translate(0, 0);
1334 | -o-transform: translate(0, 0);
1335 | transform: translate(0, 0);
1336 | }
1337 | .modal-open .modal {
1338 | overflow-x: hidden;
1339 | overflow-y: auto;
1340 | }
1341 | .modal-dialog {
1342 | position: relative;
1343 | width: auto;
1344 | margin: 10px;
1345 | }
1346 | .modal-content {
1347 | position: relative;
1348 | background-color: #ffffff;
1349 | border: 1px solid #999999;
1350 | border: 1px solid rgba(0, 0, 0, 0.2);
1351 | border-radius: 6px;
1352 | -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
1353 | box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
1354 | -webkit-background-clip: padding-box;
1355 | background-clip: padding-box;
1356 | outline: 0;
1357 | }
1358 | .modal-backdrop {
1359 | position: absolute;
1360 | top: 0;
1361 | right: 0;
1362 | left: 0;
1363 | background-color: #000000;
1364 | }
1365 | .modal-backdrop.fade {
1366 | opacity: 0;
1367 | filter: alpha(opacity=0);
1368 | }
1369 | .modal-backdrop.in {
1370 | opacity: 0.5;
1371 | filter: alpha(opacity=50);
1372 | }
1373 | .modal-header {
1374 | padding: 15px;
1375 | border-bottom: 1px solid #e5e5e5;
1376 | min-height: 16.42857143px;
1377 | }
1378 | .modal-header .close {
1379 | margin-top: -2px;
1380 | }
1381 | .modal-title {
1382 | margin: 0;
1383 | line-height: 1.42857143;
1384 | }
1385 | .modal-body {
1386 | position: relative;
1387 | padding: 15px;
1388 | }
1389 | .modal-footer {
1390 | padding: 15px;
1391 | text-align: right;
1392 | border-top: 1px solid #e5e5e5;
1393 | }
1394 | .modal-footer .btn + .btn {
1395 | margin-left: 5px;
1396 | margin-bottom: 0;
1397 | }
1398 | .modal-footer .btn-group .btn + .btn {
1399 | margin-left: -1px;
1400 | }
1401 | .modal-footer .btn-block + .btn-block {
1402 | margin-left: 0;
1403 | }
1404 | .modal-scrollbar-measure {
1405 | position: absolute;
1406 | top: -9999px;
1407 | width: 50px;
1408 | height: 50px;
1409 | overflow: scroll;
1410 | }
1411 | @media (min-width: 768px) {
1412 | .modal-dialog {
1413 | width: 600px;
1414 | margin: 30px auto;
1415 | }
1416 | .modal-content {
1417 | -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
1418 | box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
1419 | }
1420 | .modal-sm {
1421 | width: 300px;
1422 | }
1423 | }
1424 | @media (min-width: 992px) {
1425 | .modal-lg {
1426 | width: 900px;
1427 | }
1428 | }
1429 | .clearfix:before,
1430 | .clearfix:after,
1431 | .dl-horizontal dd:before,
1432 | .dl-horizontal dd:after,
1433 | .container:before,
1434 | .container:after,
1435 | .container-fluid:before,
1436 | .container-fluid:after,
1437 | .row:before,
1438 | .row:after,
1439 | .modal-footer:before,
1440 | .modal-footer:after {
1441 | content: " ";
1442 | display: table;
1443 | }
1444 | .clearfix:after,
1445 | .dl-horizontal dd:after,
1446 | .container:after,
1447 | .container-fluid:after,
1448 | .row:after,
1449 | .modal-footer:after {
1450 | clear: both;
1451 | }
1452 | .center-block {
1453 | display: block;
1454 | margin-left: auto;
1455 | margin-right: auto;
1456 | }
1457 | .pull-right {
1458 | float: right !important;
1459 | }
1460 | .pull-left {
1461 | float: left !important;
1462 | }
1463 | .hide {
1464 | display: none !important;
1465 | }
1466 | .show {
1467 | display: block !important;
1468 | }
1469 | .invisible {
1470 | visibility: hidden;
1471 | }
1472 | .text-hide {
1473 | font: 0/0 a;
1474 | color: transparent;
1475 | text-shadow: none;
1476 | background-color: transparent;
1477 | border: 0;
1478 | }
1479 | .hidden {
1480 | display: none !important;
1481 | visibility: hidden !important;
1482 | }
1483 | .affix {
1484 | position: fixed;
1485 | }
1486 |
--------------------------------------------------------------------------------
/static/css/styles.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TimeBandit/graph-sub/d23bbe06c304288425b102497c234332bed671bb/static/css/styles.css
--------------------------------------------------------------------------------
/static/js/g2j4d3.js:
--------------------------------------------------------------------------------
1 | // g2j4d3 - Gephi to JSON for D3
2 | // Translates a GEPHI JSON export to
3 | // D3 JSON format
4 |
5 | var g2j4d3 = function g2j4d3 (data) {
6 |
7 | var _oldNodes = data.nodes;
8 | var _newNodes = []
9 | var _nodes = []
10 | var _links = [];
11 |
12 | // build nodes with miserables.json naming conventions
13 | var buildnewNodes = function buildnewNodes (nodes) {
14 | for (var i = 0; i < nodes.length; i++) {
15 | var node = nodes[i]
16 | _newNodes.push({
17 | id: node.id,
18 | name: node.label,
19 | attributes: node.attributes
20 | });
21 | };
22 | console.log('Finished building new nodes');
23 | }
24 |
25 | // build index lookup based on the node id
26 | var buildIndex = function buildIndex(nodes){
27 | //console.log(nodes, nodeArray)
28 | var index = {};
29 | for (var i = 0; i< nodes.length; i++){
30 | // store as {id, index}
31 | index[nodes[i].id] = i;
32 | };
33 | console.log('Finished building index');
34 | return index;
35 | };
36 |
37 | function buildLinks(nodes, links){
38 | // mapping node id to index in the node array
39 | // source and target label used to get pos in node array
40 |
41 | var index = buildIndex(nodes);
42 |
43 | for (var i = 0; i< links.length; i++) {
44 | var sourceId = links[i].source,
45 | targetId = links[i].target;
46 |
47 | _links.push({
48 | source : index[sourceId],
49 | target : index[targetId],
50 | type : "label" in links[i] ? links[i].label : "null"
51 | });
52 | };
53 | console.log('All Done');
54 | };
55 |
56 | buildnewNodes(_oldNodes);
57 | buildLinks(_newNodes, data.edges);
58 | //console.log(_links);
59 |
60 | return {
61 | nodes: _newNodes,
62 | links: _links
63 | };
64 | }
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/static/js/graphSub.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | /* test data in data/fm.json */
3 | /*
4 | (a)---------(b) (c)---------(d)
5 | | | | | |
6 | (e)---(f)(g)(h)---------(i)(j)---(k)
7 | | |
8 | (l)------------------------(m)
9 | |
10 | (n)
11 | */
12 |
13 | // add a method conditionaly
14 | if (!('xpush' in Array.prototype)) {
15 | // push value to array only if not already present
16 | Array.prototype.xpush = function(value) {
17 | if (this.indexOf(value) === -1) {
18 | this.push(value);
19 | }
20 | return this;
21 | };
22 | };
23 |
24 | d3.graphSub = function() {
25 |
26 | var config = {
27 | width: 1000,
28 | height: 500,
29 | hops: 2
30 | };
31 |
32 | function chart(selection) {
33 | selection.each(function(d, i) {
34 |
35 | // DOM to which to attach the vizualization
36 | var current_selection = this;
37 |
38 | var model = {};
39 |
40 | var controller = {
41 |
42 | init: function() {
43 | model.graph = d;
44 | model.force = d3.layout.force();
45 | model.force2 = d3.layout.force();
46 | model.subNetNodes = model.force.nodes();
47 | model.subNetLinks = model.force.links();
48 | model.linkStrings = [];
49 | model.labelAnchors = model.force2.nodes();
50 | model.labelAnchorLinks = model.force2.links();
51 |
52 | // setup search-box data
53 | model.nodeNames = [];
54 | for (var i = 0; i < model.graph.nodes.length; i++) {
55 | model.nodeNames.push({
56 | 'label': model.graph.nodes[i].name,
57 | 'value': i + ''
58 | });
59 | };
60 |
61 | view.init();
62 |
63 | this.getSubnet(0, 1)
64 | this.click(model.subNetNodes[0]);
65 | },
66 |
67 | graphNodes: function() {
68 | return model.graph.nodes;
69 | },
70 |
71 | graphLinks: function() {
72 | return model.graph.links;
73 | },
74 |
75 | // add link to the layout
76 | addLink: function(source, target, value) {
77 | var link = {
78 | "source": this.findNode(source),
79 | "target": this.findNode(target),
80 | "value": value
81 | };
82 | model.subNetLinks.push(link);
83 | },
84 |
85 | // look for the node in the d3 layout
86 | findNode: function(name) {
87 | for (var i in model.graph.nodes) {
88 | if (model.graph.nodes[i]["name"] === name) return model.graph.nodes[i];
89 | };
90 | },
91 |
92 | // remove all links from the layout
93 | removeAllLinks: function(linkArray) {
94 | linkArray.splice(0, linkArray.length);
95 | },
96 |
97 | // remove all node from the layout
98 | removeAllNodes: function(nodeArray) {
99 | nodeArray.splice(0, nodeArray.length);
100 | },
101 |
102 | findNodeIndex: function(name, nodes) {
103 | for (var i = 0; i < nodes.length; i++) {
104 | if (nodes[i].name == name) {
105 | return i;
106 | }
107 | };
108 | },
109 |
110 | createAnchors: function() {
111 | for (var i = 0; i < model.subNetNodes.length; i++) {
112 | // one node is anchor to the force1 node
113 | var n = {
114 | label: model.subNetNodes[i]
115 | };
116 |
117 | model.labelAnchors.push({
118 | node: n,
119 | type: "tail"
120 | });
121 | model.labelAnchors.push({
122 | node: n,
123 | type: "head"
124 | });
125 | };
126 | },
127 |
128 | createAnchorLinks: function() {
129 | for (var i = 0; i < model.subNetNodes.length; i++) {
130 | // nodes are connected in pairs
131 | model.labelAnchorLinks.push({
132 | source: i * 2,
133 | target: i * 2 + 1,
134 | weight: 1
135 | });
136 | };
137 | },
138 |
139 | getSubnet: function(currentIndex, hops) {
140 | // links stored as JSON objects, easy to compare
141 | // operates on the data loaded from the JSON
142 | var n = model.graph.nodes[currentIndex];
143 |
144 | model.subNetNodes.xpush(n);
145 |
146 | if (hops === 0) {
147 | return;
148 | };
149 |
150 | for (var i = 0; i < model.graph.links.length; i++) {
151 |
152 | if (currentIndex === model.graph.links[i].source) {
153 | model.linkStrings.xpush(JSON.stringify(model.graph.links[i]));
154 | this.getSubnet(model.graph.links[i].target, hops - 1)
155 | };
156 | if (currentIndex === model.graph.links[i].target) {
157 | model.linkStrings.xpush(JSON.stringify(model.graph.links[i]));
158 | this.getSubnet(model.graph.links[i].source, hops - 1)
159 | };
160 | };
161 | },
162 |
163 | click: function(d) {
164 | //console.log(d);
165 | var nodeName;
166 |
167 | if (d.hasOwnProperty('node')) {
168 | // the callback route
169 | nodeName = d.node.label.name;
170 | } else {
171 | nodeName = d.name;
172 | };
173 |
174 | $("#search").val(nodeName);
175 |
176 | // graph refreshed onces after nodes is added then after links
177 | // prevents wild variations in graph render.
178 | model.linkStrings = []; // var to ensure links no repeated
179 |
180 | this.removeAllNodes(model.subNetNodes); // clears force.nodes()
181 | this.removeAllLinks(model.subNetLinks); // clears force.links()
182 |
183 | this.removeAllNodes(model.labelAnchors);
184 | this.removeAllLinks(model.labelAnchorLinks);
185 |
186 | var link,
187 | source,
188 | target;
189 |
190 | // first the nodes and anchors
191 | // extract subnet around 'd' with all nodes up to 2 hops away
192 | this.getSubnet(this.findNodeIndex(nodeName, model.graph.nodes), config.hops);
193 | this.createAnchors();
194 |
195 | view.render();
196 |
197 |
198 | // now the links and anchor links
199 | // add links incrementaly
200 | for (var i = 0; i < model.linkStrings.length; i++) {
201 | link = JSON.parse(model.linkStrings[i]);
202 |
203 | source = model.graph.nodes[link.source];
204 | target = model.graph.nodes[link.target];
205 | this.addLink(source.name, target.name, 2);
206 |
207 | };
208 |
209 | this.createAnchorLinks();
210 |
211 | view.render();
212 |
213 | // console.log(JSON.stringify(model.subNetNodes));
214 | // console.log(JSON.stringify(model.subNetLinks));
215 | }
216 |
217 | };
218 |
219 | var view = {
220 |
221 | init: function() {
222 | d3.select(window).on("resize", this.resize)
223 |
224 | this.color = d3.scale.category10();
225 |
226 | this.viz = d3.select(current_selection)
227 | .append("svg:svg")
228 | .attr("width", config.width)
229 | .attr("height", config.height)
230 | .attr("id", "svg")
231 | .call(d3.behavior.zoom())
232 | .attr("pointer-events", "all")
233 | .attr("viewBox", "0 0 " + 1000 + " " + 500)
234 | .attr("perserveAspectRatio", "xMinYMid")
235 | .append('svg:g');
236 |
237 | //Per-type markers, as they don't inherit styles.
238 | this.viz.insert("defs")
239 | .selectAll("marker")
240 | .data(["suit", "licensing", "resolved"])
241 | .enter()
242 | .append("marker")
243 | .attr("id", function(d) {
244 | return d;
245 | })
246 | .attr("viewBox", "0 -5 10 10")
247 | .attr("refX", 5)
248 | .attr("refY", 0)
249 | .attr("markerWidth", 6)
250 | .attr("markerHeight", 6)
251 | .attr("orient", "auto")
252 | .append("path")
253 | .attr("d", "M0,-1L5,0L0,1");
254 | //.attr("M0,-5L10,0L0,5");
255 |
256 | // linear gradient for the lines
257 | d3.select("defs")
258 | .insert("linearGradient")
259 | .attr("id", "linearGradient")
260 | .attr("x1", "0%")
261 | .attr("y1", "0%")
262 | .attr("x2", "100%")
263 | .attr("y2", "100%")
264 | .attr("spreadMethod", "pad");
265 |
266 | d3.select("linearGradient")
267 | .insert("stop")
268 | .attr("offset", "0%")
269 | .attr("stop-color", "grey")
270 | .attr("stop-opacity", "0");
271 |
272 | d3.select("linearGradient")
273 | .insert("stop")
274 | .attr("offset", "100%")
275 | .attr("stop-color", "grey")
276 | .attr("stop-opacity", "1");
277 |
278 | // female D54A5C
279 | // male A2C1D5
280 | // clear search box
281 | $("#search").val('');
282 |
283 | // bind search values do the search box
284 | $("#search").autocomplete({
285 | source: model.nodeNames,
286 |
287 | select: function(event, ui) {
288 | event.preventDefault();
289 | //console.log(+ui.item.value);
290 | controller.click(controller.graphNodes()[+ui.item.value], +ui.item.value);
291 | $("#search").val(ui.item.label);
292 | },
293 |
294 | focus: function(event, ui) {
295 | event.preventDefault();
296 | $("#search").val(ui.item.label);
297 | }
298 | });
299 | },
300 |
301 | resize: function() {
302 | x = window.innerWidth || e.clientWidth || g.clientWidth;
303 | y = window.innerHeight || e.clientHeight || g.clientHeight;
304 |
305 | d3.select("svg").attr("width", x).attr("height", y);
306 | },
307 |
308 | render: function() {
309 |
310 | // join
311 | var link = view.viz.selectAll("line")
312 | .data(model.subNetLinks, function(d) {
313 | return d.source.name + "-" + d.target.name;
314 | });
315 |
316 | // enter
317 | link.enter().insert("line", "g")
318 | .attr("id", function(d) {
319 | return d.source.name + "-" + d.target
320 | .name;
321 | })
322 | .attr("stroke-width", function(d) {
323 | return d.value / 10;
324 | })
325 | .attr("stroke", "grey")
326 | .attr("opacity", "0.5")
327 | .attr("class", "link")
328 | .attr("marker-end", "url(#suit)");
329 | //.attr("stroke", "url(#linearGradient)")
330 |
331 | // update
332 | link.append("title")
333 | .text(function(d) {
334 | return d.value;
335 | });
336 |
337 | // exit
338 | link.exit().remove();
339 |
340 | // join
341 | var node = this.viz.selectAll("g.node")
342 | .data(model.subNetNodes, function(d) {
343 | return d.name;
344 | });
345 |
346 | // enter
347 | var nodeEnter = node.enter()
348 | .append("g")
349 | .attr("class", "node");
350 |
351 |
352 | // enter
353 | nodeEnter
354 | .append("svg:circle")
355 | .attr("r", 0)
356 | .attr("id", function(d) {
357 | return "Node;" + d.name;
358 | })
359 | .attr("class", "nodeStrokeClass")
360 | .attr("fill", function(d) {
361 | return view.color(d.group);
362 | });
363 |
364 | // exit
365 | node.exit().remove();
366 |
367 | // Force2 labels
368 |
369 | // join
370 | var anchorLink = this.viz.selectAll("line.anchorLink")
371 | .data(model.labelAnchorLinks); //.enter().append("svg:line").attr("class", "anchorLink").style("stroke", "#999");
372 |
373 | // join
374 | var anchorNode = this.viz.selectAll("g.anchorNode")
375 | .data(model.labelAnchors, function(d, i) {
376 | //console.log(d.node.label.name + d.type);
377 | return d.node.label.name + d.type;
378 | });
379 |
380 | // enter
381 | var anchorNodeEnter = anchorNode
382 | .enter()
383 | .append("svg:g")
384 | .attr("class", "anchorNode");
385 |
386 | anchorNodeEnter
387 | .on('click', function(d) {
388 | controller.click(d);
389 | }, false)
390 |
391 | // enter
392 | anchorNodeEnter
393 | .append("svg:circle")
394 | .attr("r", 0)
395 | .style("fill", "red");
396 |
397 | // enter
398 | anchorNodeEnter
399 | .append("svg:text")
400 | .text(function(d, i) {
401 | return i % 2 == 0 ? "" : d.node.label.name
402 | })
403 | .attr("class", "textClass")
404 | .style("fill", "black")
405 | .style("font-family", "Arial")
406 | .style("font-size", 20);
407 |
408 | // add coloured box around text
409 | anchorNode.each(function(d, i) {
410 | if (i % 2 != 0) {
411 | // prevents two rects being added
412 | // due to render being called twice in
413 | // click func.
414 | //console.log(this.childNodes[2]);
415 | var textElem = this.childNodes[1].getBBox();
416 | //console.log(textElem);
417 | if (this.childNodes.length === 2) {
418 | d3.select(this)
419 | .insert("rect", "text")
420 | .attr("width", textElem.width)
421 | .attr("height", textElem.height)
422 | .attr("y", textElem.y)
423 | .attr("x", textElem.x)
424 | .attr("fill", function(d) {
425 | return view.color(d.node.label.group);
426 | })
427 | .attr("opacity", "0.3");
428 | };
429 |
430 | };
431 | });
432 |
433 |
434 | // exit
435 | anchorNode.exit().remove();
436 |
437 | // Restart the force layout.
438 | model.force
439 | .size([config.width, config.height])
440 | .charge(-3000)
441 | .gravity(1)
442 | .linkDistance(50)
443 | .start();
444 |
445 | // restart the labels force layout
446 | model.force2
447 | .size([config.width, config.height])
448 | .gravity(0)
449 | .linkDistance(0)
450 | .linkStrength(8)
451 | .charge(-200)
452 | .start();
453 |
454 | //console.log('selection', anchorNode);
455 | //console.log('force datum', force2.nodes());
456 |
457 | var updateLink = function() {
458 | this.attr("x1", function(d) {
459 | return d.source.x;
460 | }).attr("y1", function(d) {
461 | return d.source.y;
462 | }).attr("x2", function(d) {
463 | return d.target.x;
464 | }).attr("y2", function(d) {
465 | return d.target.y;
466 | });
467 | }
468 |
469 | var updateNode = function() {
470 | this.attr("transform", function(d) {
471 | //console.log('line 398',d.x, d.y);
472 | return "translate(" + d.x + "," + d.y + ")";
473 | });
474 | }
475 |
476 | model.force.on("tick", function() {
477 |
478 | model.force2.start();
479 |
480 | //---------
481 | node.call(updateNode);
482 |
483 | anchorNode.each(function(d, i) {
484 |
485 | if (i % 2 == 0) {
486 |
487 | d.x = d.node.label.x;
488 | d.y = d.node.label.y;
489 | } else {
490 | // get the bounding box
491 | var b = this.childNodes[1].getBBox();
492 |
493 | var diffX = d.x - d.node.label.x;
494 | var diffY = d.y - d.node.label.y;
495 |
496 | var dist = Math.sqrt(diffX * diffX + diffY * diffY);
497 |
498 | var shiftX = b.width * (diffX - dist) / (dist * 2);
499 | shiftX = Math.max(-b.width, Math.min(0, shiftX));
500 |
501 | var shiftY = 5;
502 |
503 | // move the label of the current anchor
504 | this.childNodes[1].setAttribute("transform", "translate(" + shiftX + "," + shiftY + ")");
505 | // move the coloured box of the current anchor
506 | this.childNodes[2].setAttribute("transform", "translate(" + shiftX + "," + shiftY + ")");
507 | }
508 | });
509 | anchorNode.call(updateNode);
510 |
511 | link.call(updateLink);
512 |
513 | anchorLink.call(updateLink);
514 | });
515 | ///
516 | }
517 |
518 | }
519 |
520 | // make it all go
521 | controller.init();
522 | });
523 |
524 |
525 | };
526 |
527 | chart.width = function(value) {
528 | if (!arguments.length) return config.width;
529 | config.width = value;
530 | return chart; // enable chaining
531 | };
532 |
533 | chart.height = function(value) {
534 | if (!arguments.length) return config.height;
535 | config.height = value;
536 | return chart; // enable chaining
537 | };
538 |
539 | chart.hops = function(value) {
540 | if (!arguments.length) return config.hops;
541 | config.hops = value;
542 | return chart; // enable chaining
543 | };
544 |
545 | return chart;
546 |
547 | };
548 | })();
549 |
550 | /*----------------------------------------------------------------------------
551 | The code example below:
552 | 1. loads the JSON data.
553 | 2. Sets the width to 760px.
554 | 3. Set the height to 500px.
555 | 4. Attaches the cahrt to the DOM element with id #chart
556 | */
557 |
558 | d3.json("data/miserables.json", function(error, graph) {
559 | if (error) throw error;
560 |
561 | // Parse JSON into the correct format if needed
562 |
563 | var chart = d3.graphSub()
564 | .width(760)
565 | .height(500)
566 | .hops(2);
567 | //console.log(graph);
568 |
569 | d3.select("#chart")
570 | .datum(graph)
571 | .call(chart);
572 | });
573 |
--------------------------------------------------------------------------------
/static/js/underscore-min.js:
--------------------------------------------------------------------------------
1 | !function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
2 | // Underscore.js 1.13.1
3 | // https://underscorejs.org
4 | // (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
5 | // Underscore may be freely distributed under the MIT license.
6 | var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e":">",'"':""","'":"'","`":"`"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o0?0:u-1;o>=0&&o0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ao&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);ir?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;ae||void 0===t)return 1;if(t
2 |
3 |
4 |
5 | graphSub Unit Tests
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
88 |
89 |
--------------------------------------------------------------------------------