├── .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 | --------------------------------------------------------------------------------