From 7c58287f0aecdf4340b2f1575d88c98e5f2f6802 Mon Sep 17 00:00:00 2001 From: limqhz <540344226@qq.com> Date: Tue, 7 Jun 2022 19:20:21 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E7=83=9F=E8=8A=B1=20=E6=96=97=E5=9B=BE?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/quinn/config/SecurityConfig.java | 2 +- .../com/quinn/controller/AboutController.java | 13 + .../com/quinn/controller/LoginController.java | 4 - src/main/resources/static/css/iconfont.css | 1 + src/main/resources/static/css/vno.css | 25 + .../resources/static/firework/css/style.css | 336 +++ .../resources/static/firework/js/MyMath.js | 66 + .../resources/static/firework/js/Stage.js | 270 ++ .../resources/static/firework/js/fscreen.js | 69 + .../resources/static/firework/js/script.js | 2312 +++++++++++++++++ .../static/firework/mp3/burst-sm-1.mp3 | Bin 0 -> 28992 bytes .../static/firework/mp3/burst-sm-2.mp3 | Bin 0 -> 25344 bytes .../resources/static/firework/mp3/burst1.mp3 | Bin 0 -> 34512 bytes .../resources/static/firework/mp3/burst2.mp3 | Bin 0 -> 32208 bytes .../static/firework/mp3/crackle-sm-1.mp3 | Bin 0 -> 42240 bytes .../static/firework/mp3/crackle1.mp3 | Bin 0 -> 40608 bytes .../resources/static/firework/mp3/lift1.mp3 | Bin 0 -> 8500 bytes .../resources/static/firework/mp3/lift2.mp3 | Bin 0 -> 8108 bytes .../resources/static/firework/mp3/lift3.mp3 | Bin 0 -> 7561 bytes src/main/resources/static/js/main.js | 48 + .../resources/static/wangedit/js/wang.init.js | 19 +- src/main/resources/templates/blog/editor.html | 129 +- src/main/resources/templates/blog/write.html | 127 +- .../resources/templates/common/footer.html | 4 +- .../resources/templates/common/header.html | 14 +- .../resources/templates/firework/index.html | 168 ++ src/main/resources/templates/index.html | 243 +- src/main/resources/templates/page/favor.html | 91 +- 28 files changed, 3675 insertions(+), 266 deletions(-) create mode 100644 src/main/resources/static/css/iconfont.css create mode 100644 src/main/resources/static/css/vno.css create mode 100644 src/main/resources/static/firework/css/style.css create mode 100644 src/main/resources/static/firework/js/MyMath.js create mode 100644 src/main/resources/static/firework/js/Stage.js create mode 100644 src/main/resources/static/firework/js/fscreen.js create mode 100644 src/main/resources/static/firework/js/script.js create mode 100644 src/main/resources/static/firework/mp3/burst-sm-1.mp3 create mode 100644 src/main/resources/static/firework/mp3/burst-sm-2.mp3 create mode 100644 src/main/resources/static/firework/mp3/burst1.mp3 create mode 100644 src/main/resources/static/firework/mp3/burst2.mp3 create mode 100644 src/main/resources/static/firework/mp3/crackle-sm-1.mp3 create mode 100644 src/main/resources/static/firework/mp3/crackle1.mp3 create mode 100644 src/main/resources/static/firework/mp3/lift1.mp3 create mode 100644 src/main/resources/static/firework/mp3/lift2.mp3 create mode 100644 src/main/resources/static/firework/mp3/lift3.mp3 create mode 100644 src/main/resources/static/js/main.js create mode 100644 src/main/resources/templates/firework/index.html diff --git a/src/main/java/com/quinn/config/SecurityConfig.java b/src/main/java/com/quinn/config/SecurityConfig.java index 6dc3ba1..2b247cd 100644 --- a/src/main/java/com/quinn/config/SecurityConfig.java +++ b/src/main/java/com/quinn/config/SecurityConfig.java @@ -31,7 +31,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/register","/login","/toLogin","/checkLogin","/checkRegister").permitAll() .antMatchers("/source","/source/view/*").permitAll() .antMatchers("/blog","/blog/read/*").permitAll() - .antMatchers("/guess","/favor").permitAll() + .antMatchers("/guess","/favor","/firework").permitAll() .antMatchers("/search/**").permitAll() .antMatchers("/about").permitAll() .antMatchers("/user/donate").permitAll() diff --git a/src/main/java/com/quinn/controller/AboutController.java b/src/main/java/com/quinn/controller/AboutController.java index d8a1c65..cd1a68b 100644 --- a/src/main/java/com/quinn/controller/AboutController.java +++ b/src/main/java/com/quinn/controller/AboutController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.quinn.common.ExpBucket; import com.quinn.intergration.BucketImage; +import com.quinn.intergration.TodayLove; import com.quinn.pojo.About; import com.quinn.service.AboutService; import com.quinn.utils.QuinnUtils; @@ -33,6 +34,8 @@ public class AboutController extends BaseModelController { @Resource AboutService aboutService; + @Resource + TodayLove todayLove; @GetMapping("/about") public String userIndexBlog(HttpServletRequest request,Model model){ @@ -51,9 +54,16 @@ public class AboutController extends BaseModelController { return "cimi/guess"; } + @GetMapping("/firework") + public String firework(){ + return "firework/index"; + } + // 列表展示 @GetMapping("/favor") public String sourceList(Model model) throws IOException { + // 每日情话 + model.addAttribute("LoveList",todayLove.getTodayLoveStr()); MyPageParam pageParam = new MyPageParam(1,24); List recordList = aboutService.listExp(null,pageParam); model.addAttribute("recordList",recordList); @@ -63,6 +73,8 @@ public class AboutController extends BaseModelController { @PostMapping("/favor") public String blogListPage(FindNavReq findNavReq, Model model) throws IOException { + // 每日情话 + model.addAttribute("LoveList",todayLove.getTodayLoveStr()); int page = findNavReq.getPageNum(); int limit = findNavReq.getLimit(); if (findNavReq.getPageNum() < 1){ @@ -73,6 +85,7 @@ public class AboutController extends BaseModelController { // 结果 model.addAttribute("recordList",recordList); model.addAttribute("pageParam",pageParam); + model.addAttribute("findBucket",findNavReq.getFindWhat()); return "page/favor::user_table_refresh"; } diff --git a/src/main/java/com/quinn/controller/LoginController.java b/src/main/java/com/quinn/controller/LoginController.java index 0bb2dfa..874a077 100644 --- a/src/main/java/com/quinn/controller/LoginController.java +++ b/src/main/java/com/quinn/controller/LoginController.java @@ -37,15 +37,11 @@ public class LoginController { UserService userService; @Autowired UserInfoService userInfoService; - @Resource - TodayLove todayLove; @GetMapping({"/","/index","/source/view/index", "/blog/read/index" }) public String index(Model model) throws IOException { - // 每日情话 - model.addAttribute("LoveList",todayLove.getTodayLoveStr()); return "index"; } diff --git a/src/main/resources/static/css/iconfont.css b/src/main/resources/static/css/iconfont.css new file mode 100644 index 0000000..f429cec --- /dev/null +++ b/src/main/resources/static/css/iconfont.css @@ -0,0 +1 @@ +@font-face{font-family:"iconfont";src:url('iconfont.eot?t=1538765677655');src:url('iconfont.eot?t=1538765677655#iefix') format('embedded-opentype'),url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAABD4AAsAAAAAGEwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8dkrQY21hcAAAAYAAAACyAAACYAVmbC5nbHlmAAACNAAADFkAABC4LpbxRWhlYWQAAA6QAAAAMQAAADYS3OzPaGhlYQAADsQAAAAgAAAAJAfhA4xobXR4AAAO5AAAABYAAAA4OAH//mxvY2EAAA78AAAAHgAAAB4kriBobWF4cAAADxwAAAAfAAAAIAE6AdRuYW1lAAAPPAAAAUUAAAJtPlT+fXBvc3QAABCEAAAAcQAAAJd6PSu0eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWCcwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMby4x9zwv4EhhrmBoQEozAiSAwDtxwzDeJzlksENgzAMRX8I0JKC1FNPvXKibMUKLNB5qp46DxKXL7aAb9xb2aCOXqR8xXb0YwAFgCgeIgfCBwEWb6lh1yPSrud46nzDVUrJyIKJLTv2HDhyXqZ1BYhj/SCCat1/FnDCRR1rnNWx1K2ITK9sUCmlPKz0X1Hv++t7asxzR86BwZGHYObY/zE6ls3CkcNgcuzv2TpyHewcmwH2js0JBwdWe3Rshjg79p5lclBttmI/0AAAeJyFN1uMXddVZ+3ned3zuPc87sx9zb1n7jme8Xhmch/neMb2PDL2jJuXPWnsaVQb4zQOCXEIbUzdRhQ1bgLTOhWto5Bg1LilVVUFRClqi0ol5H4gxCdYhY8gBZBQUfgolBAKsu+wzhnbSvjh3v1Ye6211z57rbXXXlsRirJzk/4n+QdlWTmqfFq5pFxWXlUU6DWJZ5GoEyfYdWbJ0IIIu8ES6SMpXKIZliYNm5CXJcrTWbCgCSn0lsghGETDQTwHcTJLo45F5O1O2MjkdxrgNQkdxB3hBb20ewfIliDZlULfdOqernt1Ry2rS0+//LUv/vKSWlHvIn3HFE5v5dh0Na6XCSnXk+r0AxNRz2GWU775FrODgJlVHz6/+quP3EME0RgzO/Fs1eu0m6bZnJgsV+fijsmYyhiZf+Tjz+mWqlo6XNJNHctbpkmYF1jCgz+0qhNxu2oJtvjYkTg+8tgiE1a1HU8gyrT0ycMHZi11vBN7XtwZV63ZVv3wpG6Z4oLuqWrZ09XR/7QG6zP4kapX8nRRrnumapZ1vYydVy8LHdEq8WbWBy0QOuINQ93tBMPpqup5qqIoBKtCf0i+oJjKmKJ0OwnEg7QXQuCJdiceZJD2Ak+CoF+sWKNfsepdC65Y9Zt/VamV4BWrWyuNnrGuIs6erOdgt55zvFKqT9rIrSgS/WBE3yW3lKZyQNlQHlXOKc8qn0JPiHeNhlbO0iwNwgDHaK5+kGb3pDGNl0gSCyniLI2lBVhyh0BiGoOIkyXI51gAaN4hcuSW7qeB9AKOnCLY5cTpg1y4JzIxC0voAYJOTB8tcdMG3zYNw35+zheUUd8ueTS5dHmMiXJj7pKYBEmzX3ziZbrfYf5bn/z1W+me06MrF9+g9I2LF69Reg1aeomwlwzDsozNErdHJ59tCzBb65+Juweuho1aMN5orqu2xhxH5eRdTVLCKiXHB0KYbBwZrArDaJTB8F+7Ovqm8Oi9nWiSG7VGvNaY/l3t+JPkxV8S2tknzp0afZc9dvzYeclOPrR5EX7L1MnzNWn7tnFKNezHg5c0Mu9Fzbn0SzdI0G1RUu3W7xek5JpYFaWzs6MojJK+4ih15SHU/ovKl5RvKD9Q/l75J+VflP8GAA4alMAFHxKYgWU4Bh+GLXgWLsBnYRt+B67CG/BH8H34y9xqhVFk0C+O1WxulyQLCtOIRMg46eSHMUQMQ74OnrthivQeMg/w1EKSN1lhPS5klBspyT0hysVhCYNuEEqUgibPrdjPelkuGiWRnIVKJMe4UpJmsj+MhkX1I/92Rfb/g8x8iQ5WIPsFIgjTLNwV43t7Ien3DoHMNyHjZcjbML0zH+f60VBmCA8jPwoR72MNscsQkgXc98X7PipO+hGugGugiKxY8TYxu/0BuaS84jjqo5Ssn+D3IOGDYqJCTlZsYndDYTER+2JJhAvOfHKI1e+/b4+5Jm73y5DvV0jUam6fNCPf7w87DtW0Ya8+CMcq+uQ+b65Wao2Xq5zp1ynduyf0GZMYw8rRZIOMe9NbM5QTMug5Npc6N8bMajBGQ3cqaBwlDS5XhaRBve2Q0rKmg2Tttfbxmz/2fN6rhs1J3FY9CGZUlYDTSQeNRB+rdR85CUaFlk3DY77RaASBt88LgvrSE5yrqhZqGKCCUNNcV1QqQDnjptCYITSJ4m3COGM8QDRlPcrUw5NS8jF1nsec2MVvKs5/Xp0JoVFNCJWqnNOKRTjv1UmjAbzV4jUeSFF9qsZrwue+EL4/5/vzbc4FnyhRU/O4p2keq+gmK803qGE+yLmL5X5b2t04xE9gnBioEI4forKK4/By2ZvZOjBMDxqsLAWX0mWurhNq6KShA3EmPvwosVxveCj+gq2yzwElXtmLtgOfUUG4rjIiNCPYV1ddAyNQ2eFUJbqmEiaoNJ2ZioVBh58+tHRgf70GpNT+jY+dpagSzs0yYfsAaD1oxJwCkMgBU8QrA2/cHv2U2FJotmVww17EhmMxhAEedzgWjwiqc+lx0+RCMNyNoQum2oHKWcloErSuOk4pZawP44yFwEBT6cEAwOS2sJjoMY0jQRWccIp6ZpQLHHDbHEeN8LoqtNA3B7bdYuPjDI06phOdcM+QuJ4qkVUtlV1Dr05zPi3k7Ky0OJciajAmNNOhOqlSjdod7nm8ww/yeb6POapGddXhri4JkXp+jeV3zdv0BRrhXTOjLCibykeVi8rvYdQKgzwqLQNehZEM8PCIYZzIvEuzBahQhJJsmIS90IasoGOcikMk5aAbt3Bu2PNlWFDmQGbSz3pehAev0pFJNwu9fmCj+CC/sHDqoB8kVFbydYs/Tg8+uDIGxyxfHKY/InXXLz03c4gx+uoMq9Wotbh5Sl7oM0nnS9g8hJrXOx+TVVev+VQ/r9csSvW5r9QOU4/S2NWpbly59vXLUt+mXxUrU1XQOhuMyhrWZ6SgtEXphmDb5ARmBThVyiszh6T84WHRqVMv072pppT0cItWF6SUnivn+hJnN+uCuYsuvf8haX15e/TS6NtzfV3/+fbzLSqb32xWpyzdvw8XHz3d8gwXJg3Zkt2ubF7pzJdKuuWJv2UnZEmekTClV0vxDB7Wzo+2z2wwKeeq6NBd+LKEfh8/x6NSR2RfGN1W06XeRo3q1X6Tyd8+l9tVFDnK18lfK4YSKpEyV2QSCrSLO6VtgRckUd6G/RwDBSYsqN0P4Iskod1LB3E7yuEDkMPwPXizEceN0Ulsv3U8B/OGPFwgGgXx1oX/H38fxAsx5M1v3oVG/3EXhPch48X4bilysJ136HdooCTKuqJkTciToNk8acU8J+wFoS8R7Ah/NyvGKxfz5yEfLKMjhjlLihxxFAs/TA+AjDpJ0IBXahvd+izA2txwg5ALH5k71d0XHopaERyaW1kH8snTi2f3kg6QdThM4Mx9yysT9Xq1DvVohsx06uTl6iTUWu1m2T+8cuIYXozWVtmDsWqz7gRH7t16GCbapQerr78HH4dzv7AJMO4+asPEzCM4PvPaHyt3c8sb5F8VVfEVpdLGnfDuEkgXN4HmyVwuksvknWQIo9kRPgJSGCa7wwXDIO/041u34t4PRitxH6Afw/V/F7uugPr6L3qN9pQTmEu+iJLTTMg+Sg9klAOYfgQhQlneY06I117+F7cPY55NYOKRJxy7aQcqLUuTTnSHAYnLkPJB2m9jSul6UuyFDmanSEoizGgqnu+F/TBnOgBBmrgDpP9No+s7O1InklwB+apkklD4E1aeumdOFTpoFWe+rxvensqYZrQ65UpJr40Nu7UW/3OqUkPl8iojsHdGSK6FXcelbGIsVOFFwWFNqBjixaekNPdNc+kPuFgXgSXFhyhb4gLkdZWOhWT/oiHGx598khslzzu40Blmmh5U2y3PXzpomg+stcZVXsK7AbOM/vLsuWHF1fB+OZvtd12M8joHVR750Gr1PpZfKLeuqRSoqDY4XQeM6+2f/pskKWGzBASDt9U7drhCX6eninP5MJ7Iwjll4bYZAvkLDtCRK4UvY9jMNZgndthExTMuToLdp17u8YXPL+1mhy0ahHFCFoZHAY4OU/TgjXTzPCHnNzefJuTpEQWmT3jJaam5/tRTq+1Je8VSjUo4Nr9abjuTPvOthU8sfuK55Z8v3/MHydSjHdvZa7utLt5NdTia3hZ7dBUFHs/FHt88f/Mf91Q7Z149/uZ1227U0q0Jx8QIPt5bXHjumc98+uDFA6ZDgLHAcjnt2uX9DXP+0tT0sQf3Tue62NnZ+WcGtKpw1IaNPik1TKep5N0Eg2mYrawSQpTV0cp7GItguPYzePKpx+E7w9FT8Npw9FVCh+++17sOL20+vJnrFgoFb5G/w2in5BFN5oc/93Ef4TYqykU1tfPXD8I5/c6hwjHdP/r9kgvgln6cd4Nk9PZuD2/uokcnz75AsYcfbf0awcz/LxB+AEluyU4GOQO0sd/F0RfOjk5ijyHk2/mLovi2ndfpz+gTyhoOhCKLh9kwEUWCj+l9Ps4z/tyeg9yq2QBT2R46gwwEcvu7voGPtZwpxkBxY/QTTv/stbIDH93gvOHaVqOxR06eqFLXOLnNalWuVe7dOPjZgxtrUFFFtca2t6wKgFO++qeEj35Cz2Fz41s3h8TRT1vz1dKcoYaETJbSUrWtiXOX96zV9CMDqs667qxKB0f08bWplx8Xxmz0ed2h6egbNwCfv8r/AgxxVFsAAAB4nGNgZGBgAOIdr4pmxvPbfGXgZmEAget3r+TC6P///09iYWZOA3I5GJhAogCNrQ5RAAAAeJxjYGRgYG7438AQw8Lw////vyzMDEARFMAHAKDJBnR4nGNhYGBgQcH//7NgiGHKAQBkagQ1AAAAAAAAANQBBAHEBDoFJgWWBgIGLgbyB3gHoAfuCFwAAHicY2BkYGDgYzzBoMQAAkxAzAWEDAz/wXwGACB0AhAAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicbcHLDsIgEAVQbuWhVdtvBIowhA4mdGL061249Rw1qZ9Z/bdgwgkaBhYOZ1ww44ob7liwKhv7Rpyd59ySPM0rUeg6jo1dJc+jiG40Dkux83iYtHtq5lOoiIscWs/DVkmV2Oz+LWwzHUWCUl+qjh+BAAAA') format('woff'),url('iconfont.ttf?t=1538765677655') format('truetype'),url('iconfont.svg?t=1538765677655#iconfont') format('svg')}.iconfont{font-family:"iconfont"!important;font-size:21px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-coding:before{content:"\e62b"}.icon-angleup:before{content:"\e664"}.icon-weibo:before{content:"\e62d"}.icon-csdn:before{content:"\e60a"}.icon-jianshu:before{content:"\e675"}.icon-list:before{content:"\e625"}.icon-iconsf:before{content:"\e600"}.icon-email:before{content:"\e605"}.icon-zhihu:before{content:"\e8de"}.icon-cnblogs:before{content:"\e602"}.icon-juejin:before{content:"\e601"}.icon-mayun:before{content:"\e603"}.icon-github:before{content:"\e6e1"} \ No newline at end of file diff --git a/src/main/resources/static/css/vno.css b/src/main/resources/static/css/vno.css new file mode 100644 index 0000000..c456a6b --- /dev/null +++ b/src/main/resources/static/css/vno.css @@ -0,0 +1,25 @@ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}.ih-item.circle.effect{margin:0 auto;-webkit-perspective:900px;-moz-perspective:900px;perspective:900px}.ih-item.circle.effect .img{z-index:11;-webkit-transition:all .5s ease-in-out;-moz-transition:all .5s ease-in-out;transition:all .5s ease-in-out}.ih-item.circle.effect .info{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d}.ih-item.circle.effect .info .info-back{opacity:1;border-radius:50%;width:100%;height:100%;background:#333}.ih-item.circle.effect .info h2{color:#fff;position:relative;font-size:18px;margin:0 auto;padding-top:40px;height:35px;text-shadow:0 0 1px white,0 1px 2px rgba(0,0,0,0.3)}.ih-item.circle.effect .info p{color:#bbb;padding:0;font-style:italic;padding-left:0;font-size:10px}.ih-item.circle.effect.bottom_to_top .img{-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;-o-transform-origin:50% 0;transform-origin:50% 0}.ih-item.circle.effect.bottom_to_top a:hover .img{-webkit-transform:rotate3d(1,0,0,180deg);-moz-transform:rotate3d(1,0,0,180deg);-ms-transform:rotate3d(1,0,0,180deg);-o-transform:rotate3d(1,0,0,180deg);transform:rotate3d(1,0,0,180deg)}.ih-item.circle.effect.top_to_bottom .img{-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;-o-transform-origin:50% 100%;transform-origin:50% 100%}.ih-item.circle.effect.top_to_bottom a:hover .img{-webkit-transform:rotate3d(1,0,0,-180deg);-moz-transform:rotate3d(1,0,0,-180deg);-ms-transform:rotate3d(1,0,0,-180deg);-o-transform:rotate3d(1,0,0,-180deg);transform:rotate3d(1,0,0,-180deg)}.ih-item.circle.effect.left_to_right .img{-webkit-transform-origin:100% 50%;-moz-transform-origin:100% 50%;-ms-transform-origin:100% 50%;-o-transform-origin:100% 50%;transform-origin:100% 50%}.ih-item.circle.effect.left_to_right a:hover .img{-webkit-transform:rotate3d(0,1,0,180deg);-moz-transform:rotate3d(0,1,0,180deg);-ms-transform:rotate3d(0,1,0,180deg);-o-transform:rotate3d(0,1,0,180deg);transform:rotate3d(0,1,0,180deg)}.ih-item.circle.effect.right_to_left .img{-webkit-transform-origin:0 50%;-moz-transform-origin:0 50%;-ms-transform-origin:0 50%;-o-transform-origin:0 50%;transform-origin:0 50%}.ih-item.circle.effect.right_to_left a:hover .img{-webkit-transform:rotate3d(0,1,0,-180deg);-moz-transform:rotate3d(0,1,0,-180deg);-ms-transform:rotate3d(0,1,0,-180deg);-o-transform:rotate3d(0,1,0,-180deg);transform:rotate3d(0,1,0,-180deg)}.ih-item a{color:#333}.ih-item a:hover{text-decoration:none}.ih-item img{width:100%;height:100%}.ih-item.circle{position:relative;width:120px;height:120px;border-radius:50%}.ih-item.circle .img{position:relative;width:120px;height:120px;border-radius:50%}.ih-item.circle .img:before{position:absolute;display:block;content:"";width:100%;height:100%;border-radius:50%;-webkit-transition:all .35s ease-in-out;-moz-transition:all .35s ease-in-out;transition:all .35s ease-in-out}.ih-item.circle .img img{border-radius:50%}.ih-item.circle .info{position:absolute;top:0;bottom:0;left:0;right:0;text-align:center;border-radius:50%;-webkit-backface-visibility:hidden;backface-visibility:hidden}@media all and (max-width:780px){.ih-item.circle .img{position:relative;width:100px;height:100px;border-radius:50%}.ih-item.circle{position:relative;width:100px;height:100px;border-radius:50%}.ih-item.circle .info .info-back h2{font-size:.9em}}.profilepic{text-align:center;display:block;-webkit-box-shadow:0 0 0 2px rgba(255,255,255,0.5),0px 2px 20px 3px rgba(0,0,0,0.25);box-shadow:0 0 0 2px rgba(255,255,255,0.5),0px 2px 20px 3px rgba(0,0,0,0.25);border-radius:300px;width:128px;height:128px;margin:0 auto;position:relative;overflow:hidden;background:#88acdb;-webkit-transition:all .2s ease-in;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-pack:center;-webkit-box-align:center;text-align:center}.animated{-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:1s;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s}.animated.hinge{-webkit-animation-duration:1s;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s}@-webkit-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-moz-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-o-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;-moz-animation-name:flash;-o-animation-name:flash;animation-name:flash}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)} +20%,40%,60%,80%{-moz-transform:translateX(10px)}}@-o-keyframes shake{0%,100%{-o-transform:translateX(0)}10%,30%,50%,70%,90%{-o-transform:translateX(-10px)}20%,40%,60%,80%{-o-transform:translateX(10px)}}.shake{-webkit-animation-name:shake;-moz-animation-name:shake;-o-animation-name:shake;animation-name:shake}@-webkit-keyframes bounce{0%,20%,50%,80%,100%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px)}}@-moz-keyframes bounce{0%,20%,50%,80%,100%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(-30px)}60%{-moz-transform:translateY(-15px)}}@-o-keyframes bounce{0%,20%,50%,80%,100%{-o-transform:translateY(0)}40%{-o-transform:translateY(-30px)}60%{-o-transform:translateY(-15px)}}.bounce{-webkit-animation-name:bounce;-moz-animation-name:bounce;-o-animation-name:bounce;animation-name:bounce}@-webkit-keyframes tada{0%{-webkit-transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0)}}@-moz-keyframes tada{0%{-moz-transform:scale(1)}10%,20%{-moz-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-moz-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-moz-transform:scale(1.1) rotate(-3deg)}100%{-moz-transform:scale(1) rotate(0)}}@-o-keyframes tada{0%{-o-transform:scale(1)}10%,20%{-o-transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-o-transform:scale(1.1) rotate(3deg)}40%,60%,80%{-o-transform:scale(1.1) rotate(-3deg)}100%{-o-transform:scale(1) rotate(0)}}.tada{-webkit-animation-name:tada;-moz-animation-name:tada;-o-animation-name:tada;animation-name:tada}@-webkit-keyframes swing{20%,40%,60%,80%,100%{-webkit-transform-origin:top center}20%{-webkit-transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg)}}@-moz-keyframes swing{20%{-moz-transform:rotate(15deg)}40%{-moz-transform:rotate(-10deg)}60%{-moz-transform:rotate(5deg)}80%{-moz-transform:rotate(-5deg)}100%{-moz-transform:rotate(0deg)}}@-o-keyframes swing{20%{-o-transform:rotate(15deg)}40%{-o-transform:rotate(-10deg)}60%{-o-transform:rotate(5deg)}80%{-o-transform:rotate(-5deg)}100%{-o-transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;-moz-transform-origin:top center;-o-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;-moz-animation-name:swing;-o-animation-name:swing;animation-name:swing}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%)}}@-moz-keyframes wobble{0%{-moz-transform:translateX(0%)}15%{-moz-transform:translateX(-25%) rotate(-5deg)}30%{-moz-transform:translateX(20%) rotate(3deg)}45%{-moz-transform:translateX(-15%) rotate(-3deg)}60%{-moz-transform:translateX(10%) rotate(2deg)}75%{-moz-transform:translateX(-5%) rotate(-1deg)}100%{-moz-transform:translateX(0%)}}@-o-keyframes wobble{0%{-o-transform:translateX(0%)}15%{-o-transform:translateX(-25%) rotate(-5deg)}30%{-o-transform:translateX(20%) rotate(3deg)}45%{-o-transform:translateX(-15%) rotate(-3deg)}60%{-o-transform:translateX(10%) rotate(2deg)}75%{-o-transform:translateX(-5%) rotate(-1deg)}100%{-o-transform:translateX(0%)}}.wobble{-webkit-animation-name:wobble;-moz-animation-name:wobble;-o-animation-name:wobble;animation-name:wobble}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.1)}100%{-webkit-transform:scale(1)}}@-moz-keyframes pulse{0%{-moz-transform:scale(1)}50%{-moz-transform:scale(1.1)}100%{-moz-transform:scale(1)}}@-o-keyframes pulse{0%{-o-transform:scale(1)}50%{-o-transform:scale(1.1)}100%{-o-transform:scale(1)}}.pulse{-webkit-animation-name:pulse;-moz-animation-name:pulse;-o-animation-name:pulse;animation-name:pulse}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-webkit-animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in}}@-moz-keyframes flip{0%{-moz-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-moz-animation-timing-function:ease-out}40%{-moz-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-moz-animation-timing-function:ease-out} +50%{-moz-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-moz-animation-timing-function:ease-in}80%{-moz-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-moz-animation-timing-function:ease-in}100%{-moz-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-moz-animation-timing-function:ease-in}}@-o-keyframes flip{0%{-o-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-o-animation-timing-function:ease-out}40%{-o-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-o-animation-timing-function:ease-out}50%{-o-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-o-animation-timing-function:ease-in}80%{-o-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);-o-animation-timing-function:ease-in}100%{-o-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-o-animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible!important;-webkit-animation-name:flip;-moz-backface-visibility:visible!important;-moz-animation-name:flip;-o-backface-visibility:visible!important;-o-animation-name:flip;backface-visibility:visible!important;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);opacity:1}}@-moz-keyframes flipInX{0%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-moz-transform:perspective(400px) rotateX(-10deg)}70%{-moz-transform:perspective(400px) rotateX(10deg)}100%{-moz-transform:perspective(400px) rotateX(0deg);opacity:1}}@-o-keyframes flipInX{0%{-o-transform:perspective(400px) rotateX(90deg);opacity:0}40%{-o-transform:perspective(400px) rotateX(-10deg)}70%{-o-transform:perspective(400px) rotateX(10deg)}100%{-o-transform:perspective(400px) rotateX(0deg);opacity:1}}.flipInX{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipInX;-moz-backface-visibility:visible!important;-moz-animation-name:flipInX;-o-backface-visibility:visible!important;-o-animation-name:flipInX;backface-visibility:visible!important;animation-name:flipInX}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);opacity:0}}@-moz-keyframes flipOutX{0%{-moz-transform:perspective(400px) rotateX(0deg);opacity:1}100%{-moz-transform:perspective(400px) rotateX(90deg);opacity:0}}@-o-keyframes flipOutX{0%{-o-transform:perspective(400px) rotateX(0deg);opacity:1}100%{-o-transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;-webkit-backface-visibility:visible!important;-moz-animation-name:flipOutX;-moz-backface-visibility:visible!important;-o-animation-name:flipOutX;-o-backface-visibility:visible!important;animation-name:flipOutX;backface-visibility:visible!important}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);opacity:1}}@-moz-keyframes flipInY{0%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-moz-transform:perspective(400px) rotateY(-10deg)}70%{-moz-transform:perspective(400px) rotateY(10deg)}100%{-moz-transform:perspective(400px) rotateY(0deg);opacity:1}}@-o-keyframes flipInY{0%{-o-transform:perspective(400px) rotateY(90deg);opacity:0}40%{-o-transform:perspective(400px) rotateY(-10deg)}70%{-o-transform:perspective(400px) rotateY(10deg)}100%{-o-transform:perspective(400px) rotateY(0deg);opacity:1}}.flipInY{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipInY;-moz-backface-visibility:visible!important;-moz-animation-name:flipInY;-o-backface-visibility:visible!important;-o-animation-name:flipInY;backface-visibility:visible!important;animation-name:flipInY}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);opacity:0}}@-moz-keyframes flipOutY{0%{-moz-transform:perspective(400px) rotateY(0deg);opacity:1}100%{-moz-transform:perspective(400px) rotateY(90deg);opacity:0}}@-o-keyframes flipOutY{0%{-o-transform:perspective(400px) rotateY(0deg);opacity:1}100%{-o-transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-webkit-animation-name:flipOutY;-moz-backface-visibility:visible!important;-moz-animation-name:flipOutY;-o-backface-visibility:visible!important;-o-animation-name:flipOutY;backface-visibility:visible!important;animation-name:flipOutY}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;-moz-animation-name:fadeIn;-o-animation-name:fadeIn;animation-name:fadeIn} +@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDown{0%{opacity:0;-moz-transform:translateY(-20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInDown{0%{opacity:0;-o-transform:translateY(-20px)}100%{opacity:1;-o-transform:translateY(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;-moz-animation-name:fadeInDown;-o-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInLeft{0%{opacity:0;-moz-transform:translateX(-20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInLeft{0%{opacity:0;-o-transform:translateX(-20px)}100%{opacity:1;-o-transform:translateX(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;-moz-animation-name:fadeInLeft;-o-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRight{0%{opacity:0;-moz-transform:translateX(20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRight{0%{opacity:0;-o-transform:translateX(20px)}100%{opacity:1;-o-transform:translateX(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;-moz-animation-name:fadeInRight;-o-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUpBig{0%{opacity:0;-moz-transform:translateY(2000px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUpBig{0%{opacity:0;-o-transform:translateY(2000px)}100%{opacity:1;-o-transform:translateY(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;-moz-animation-name:fadeInUpBig;-o-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDownBig{0%{opacity:0;-moz-transform:translateY(-2000px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInDownBig{0%{opacity:0;-o-transform:translateY(-2000px)}100%{opacity:1;-o-transform:translateY(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;-moz-animation-name:fadeInDownBig;-o-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInLeftBig{0%{opacity:0;-moz-transform:translateX(-2000px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInLeftBig{0%{opacity:0;-o-transform:translateX(-2000px)}100%{opacity:1;-o-transform:translateX(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;-moz-animation-name:fadeInLeftBig;-o-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRightBig{0%{opacity:0;-moz-transform:translateX(2000px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRightBig{0%{opacity:0;-o-transform:translateX(2000px)}100%{opacity:1;-o-transform:translateX(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;-moz-animation-name:fadeInRightBig;-o-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-o-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;-moz-animation-name:fadeOut;-o-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px)}}@-moz-keyframes fadeOutUp{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-20px)}}@-o-keyframes fadeOutUp{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(-20px)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;-moz-animation-name:fadeOutUp;-o-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px)}}@-moz-keyframes fadeOutDown{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(20px)} +}@-o-keyframes fadeOutDown{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(20px)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;-moz-animation-name:fadeOutDown;-o-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px)}}@-moz-keyframes fadeOutLeft{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-20px)}}@-o-keyframes fadeOutLeft{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-20px)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;-moz-animation-name:fadeOutLeft;-o-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px)}}@-moz-keyframes fadeOutRight{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(20px)}}@-o-keyframes fadeOutRight{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(20px)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;-moz-animation-name:fadeOutRight;-o-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@-moz-keyframes fadeOutUpBig{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-2000px)}}@-o-keyframes fadeOutUpBig{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(-2000px)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;-moz-animation-name:fadeOutUpBig;-o-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px)}}@-moz-keyframes fadeOutDownBig{0%{opacity:1;-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(2000px)}}@-o-keyframes fadeOutDownBig{0%{opacity:1;-o-transform:translateY(0)}100%{opacity:0;-o-transform:translateY(2000px)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;-moz-animation-name:fadeOutDownBig;-o-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@-moz-keyframes fadeOutLeftBig{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-2000px)}}@-o-keyframes fadeOutLeftBig{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-2000px)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;-moz-animation-name:fadeOutLeftBig;-o-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@-moz-keyframes fadeOutRightBig{0%{opacity:1;-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(2000px)}}@-o-keyframes fadeOutRightBig{0%{opacity:1;-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(2000px)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;-moz-animation-name:fadeOutRightBig;-o-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes slideInDown{0%{opacity:0;-moz-transform:translateY(-2000px)}100%{-moz-transform:translateY(0)}}@-o-keyframes slideInDown{0%{opacity:0;-o-transform:translateY(-2000px)}100%{-o-transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;-moz-animation-name:slideInDown;-o-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes slideInLeft{0%{opacity:0;-moz-transform:translateX(-2000px)}100%{-moz-transform:translateX(0)}}@-o-keyframes slideInLeft{0%{opacity:0;-o-transform:translateX(-2000px)}100%{-o-transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;-moz-animation-name:slideInLeft;-o-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes slideInRight{0%{opacity:0;-moz-transform:translateX(2000px)}100%{-moz-transform:translateX(0)}}@-o-keyframes slideInRight{0%{opacity:0;-o-transform:translateX(2000px)}100%{-o-transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;-moz-animation-name:slideInRight;-o-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@-moz-keyframes slideOutUp{0%{-moz-transform:translateY(0)}100%{opacity:0;-moz-transform:translateY(-2000px)}}@-o-keyframes slideOutUp{0%{-o-transform:translateY(0)} +100%{opacity:0;-o-transform:translateY(-2000px)}}.slideOutUp{-webkit-animation-name:slideOutUp;-moz-animation-name:slideOutUp;-o-animation-name:slideOutUp;animation-name:slideOutUp}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@-moz-keyframes slideOutLeft{0%{-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(-2000px)}}@-o-keyframes slideOutLeft{0%{-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(-2000px)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;-moz-animation-name:slideOutLeft;-o-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@-moz-keyframes slideOutRight{0%{-moz-transform:translateX(0)}100%{opacity:0;-moz-transform:translateX(2000px)}}@-o-keyframes slideOutRight{0%{-o-transform:translateX(0)}100%{opacity:0;-o-transform:translateX(2000px)}}.slideOutRight{-webkit-animation-name:slideOutRight;-moz-animation-name:slideOutRight;-o-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05)}70%{-webkit-transform:scale(0.9)}100%{-webkit-transform:scale(1)}}@-moz-keyframes bounceIn{0%{opacity:0;-moz-transform:scale(0.3)}50%{opacity:1;-moz-transform:scale(1.05)}70%{-moz-transform:scale(0.9)}100%{-moz-transform:scale(1)}}@-o-keyframes bounceIn{0%{opacity:0;-o-transform:scale(0.3)}50%{opacity:1;-o-transform:scale(1.05)}70%{-o-transform:scale(0.9)}100%{-o-transform:scale(1)}}.bounceIn{-webkit-animation-name:bounceIn;-moz-animation-name:bounceIn;-o-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px)}80%{-webkit-transform:translateY(10px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes bounceInUp{0%{opacity:0;-moz-transform:translateY(2000px)}60%{opacity:1;-moz-transform:translateY(-30px)}80%{-moz-transform:translateY(10px)}100%{-moz-transform:translateY(0)}}@-o-keyframes bounceInUp{0%{opacity:0;-o-transform:translateY(2000px)}60%{opacity:1;-o-transform:translateY(-30px)}80%{-o-transform:translateY(10px)}100%{-o-transform:translateY(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;-moz-animation-name:bounceInUp;-o-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px)}80%{-webkit-transform:translateY(-10px)}100%{-webkit-transform:translateY(0)}}@-moz-keyframes bounceInDown{0%{opacity:0;-moz-transform:translateY(-2000px)}60%{opacity:1;-moz-transform:translateY(30px)}80%{-moz-transform:translateY(-10px)}100%{-moz-transform:translateY(0)}}@-o-keyframes bounceInDown{0%{opacity:0;-o-transform:translateY(-2000px)}60%{opacity:1;-o-transform:translateY(30px)}80%{-o-transform:translateY(-10px)}100%{-o-transform:translateY(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;-moz-animation-name:bounceInDown;-o-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px)}80%{-webkit-transform:translateX(-10px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes bounceInLeft{0%{opacity:0;-moz-transform:translateX(-2000px)}60%{opacity:1;-moz-transform:translateX(30px)}80%{-moz-transform:translateX(-10px)}100%{-moz-transform:translateX(0)}}@-o-keyframes bounceInLeft{0%{opacity:0;-o-transform:translateX(-2000px)}60%{opacity:1;-o-transform:translateX(30px)}80%{-o-transform:translateX(-10px)}100%{-o-transform:translateX(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;-moz-animation-name:bounceInLeft;-o-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px)}80%{-webkit-transform:translateX(10px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes bounceInRight{0%{opacity:0;-moz-transform:translateX(2000px)}60%{opacity:1;-moz-transform:translateX(-30px)}80%{-moz-transform:translateX(10px)}100%{-moz-transform:translateX(0)}}@-o-keyframes bounceInRight{0%{opacity:0;-o-transform:translateX(2000px)}60%{opacity:1;-o-transform:translateX(-30px)}80%{-o-transform:translateX(10px)}100%{-o-transform:translateX(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;-moz-animation-name:bounceInRight;-o-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceOut{0%{-webkit-transform:scale(1)}25%{-webkit-transform:scale(0.95)}50%{opacity:1;-webkit-transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(0.3)}}@-moz-keyframes bounceOut{0%{-moz-transform:scale(1)}25%{-moz-transform:scale(0.95)}50%{opacity:1;-moz-transform:scale(1.1)}100%{opacity:0;-moz-transform:scale(0.3)} +}@-o-keyframes bounceOut{0%{-o-transform:scale(1)}25%{-o-transform:scale(0.95)}50%{opacity:1;-o-transform:scale(1.1)}100%{opacity:0;-o-transform:scale(0.3)}}.bounceOut{-webkit-animation-name:bounceOut;-moz-animation-name:bounceOut;-o-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutUp{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px)}}@-moz-keyframes bounceOutUp{0%{-moz-transform:translateY(0)}20%{opacity:1;-moz-transform:translateY(20px)}100%{opacity:0;-moz-transform:translateY(-2000px)}}@-o-keyframes bounceOutUp{0%{-o-transform:translateY(0)}20%{opacity:1;-o-transform:translateY(20px)}100%{opacity:0;-o-transform:translateY(-2000px)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;-moz-animation-name:bounceOutUp;-o-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes bounceOutDown{0%{-webkit-transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px)}}@-moz-keyframes bounceOutDown{0%{-moz-transform:translateY(0)}20%{opacity:1;-moz-transform:translateY(-20px)}100%{opacity:0;-moz-transform:translateY(2000px)}}@-o-keyframes bounceOutDown{0%{-o-transform:translateY(0)}20%{opacity:1;-o-transform:translateY(-20px)}100%{opacity:0;-o-transform:translateY(2000px)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;-moz-animation-name:bounceOutDown;-o-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px)}}@-moz-keyframes bounceOutLeft{0%{-moz-transform:translateX(0)}20%{opacity:1;-moz-transform:translateX(20px)}100%{opacity:0;-moz-transform:translateX(-2000px)}}@-o-keyframes bounceOutLeft{0%{-o-transform:translateX(0)}20%{opacity:1;-o-transform:translateX(20px)}100%{opacity:0;-o-transform:translateX(-2000px)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;-moz-animation-name:bounceOutLeft;-o-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{0%{-webkit-transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px)}}@-moz-keyframes bounceOutRight{0%{-moz-transform:translateX(0)}20%{opacity:1;-moz-transform:translateX(-20px)}100%{opacity:0;-moz-transform:translateX(2000px)}}@-o-keyframes bounceOutRight{0%{-o-transform:translateX(0)}20%{opacity:1;-o-transform:translateX(-20px)}100%{opacity:0;-o-transform:translateX(2000px)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;-moz-animation-name:bounceOutRight;-o-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateIn{0%{-moz-transform-origin:center center;-moz-transform:rotate(-200deg);opacity:0}100%{-moz-transform-origin:center center;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateIn{0%{-o-transform-origin:center center;-o-transform:rotate(-200deg);opacity:0}100%{-o-transform-origin:center center;-o-transform:rotate(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;-moz-animation-name:rotateIn;-o-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInUpLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInUpLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(90deg);opacity:0}100%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;-moz-animation-name:rotateInUpLeft;-o-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInDownLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInDownLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(-90deg);opacity:0}100%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;-moz-animation-name:rotateInDownLeft;-o-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0} +100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInUpRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInUpRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(-90deg);opacity:0}100%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;-moz-animation-name:rotateInUpRight;-o-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}}@-moz-keyframes rotateInDownRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}}@-o-keyframes rotateInDownRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(90deg);opacity:0}100%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;-moz-animation-name:rotateInDownRight;-o-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center center;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-webkit-transform:rotate(200deg);opacity:0}}@-moz-keyframes rotateOut{0%{-moz-transform-origin:center center;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:center center;-moz-transform:rotate(200deg);opacity:0}}@-o-keyframes rotateOut{0%{-o-transform-origin:center center;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:center center;-o-transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;-moz-animation-name:rotateOut;-o-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateOutUpLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(-90deg);opacity:0}}@-o-keyframes rotateOutUpLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:left bottom;-o-transform:rotate(-90deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;-moz-animation-name:rotateOutUpLeft;-o-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-webkit-transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateOutDownLeft{0%{-moz-transform-origin:left bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:left bottom;-moz-transform:rotate(90deg);opacity:0}}@-o-keyframes rotateOutDownLeft{0%{-o-transform-origin:left bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:left bottom;-o-transform:rotate(90deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;-moz-animation-name:rotateOutDownLeft;-o-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateOutUpRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(90deg);opacity:0}}@-o-keyframes rotateOutUpRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:right bottom;-o-transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;-moz-animation-name:rotateOutUpRight;-o-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-webkit-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateOutDownRight{0%{-moz-transform-origin:right bottom;-moz-transform:rotate(0);opacity:1}100%{-moz-transform-origin:right bottom;-moz-transform:rotate(-90deg);opacity:0}}@-o-keyframes rotateOutDownRight{0%{-o-transform-origin:right bottom;-o-transform:rotate(0);opacity:1}100%{-o-transform-origin:right bottom;-o-transform:rotate(-90deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;-moz-animation-name:rotateOutDownRight;-o-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);opacity:0} +60%{-webkit-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);opacity:1}}@-moz-keyframes lightSpeedIn{0%{-moz-transform:translateX(100%) skewX(-30deg);opacity:0}60%{-moz-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-moz-transform:translateX(0%) skewX(-15deg);opacity:1}100%{-moz-transform:translateX(0%) skewX(0deg);opacity:1}}@-o-keyframes lightSpeedIn{0%{-o-transform:translateX(100%) skewX(-30deg);opacity:0}60%{-o-transform:translateX(-20%) skewX(30deg);opacity:1}80%{-o-transform:translateX(0%) skewX(-15deg);opacity:1}100%{-o-transform:translateX(0%) skewX(0deg);opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;-moz-animation-name:lightSpeedIn;-o-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;-moz-animation-timing-function:ease-out;-o-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);opacity:0}}@-moz-keyframes lightSpeedOut{0%{-moz-transform:translateX(0%) skewX(0deg);opacity:1}100%{-moz-transform:translateX(100%) skewX(-30deg);opacity:0}}@-o-keyframes lightSpeedOut{0%{-o-transform:translateX(0%) skewX(0deg);opacity:1}100%{-o-transform:translateX(100%) skewX(-30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;-moz-animation-name:lightSpeedOut;-o-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;-moz-animation-timing-function:ease-in;-o-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes hinge{0%{-webkit-transform:rotate(0);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);opacity:1;-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out}100%{-webkit-transform:translateY(700px);opacity:0}}@-moz-keyframes hinge{0%{-moz-transform:rotate(0);-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}20%,60%{-moz-transform:rotate(80deg);-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}40%{-moz-transform:rotate(60deg);-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}80%{-moz-transform:rotate(60deg) translateY(0);opacity:1;-moz-transform-origin:top left;-moz-animation-timing-function:ease-in-out}100%{-moz-transform:translateY(700px);opacity:0}}@-o-keyframes hinge{0%{-o-transform:rotate(0);-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}20%,60%{-o-transform:rotate(80deg);-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}40%{-o-transform:rotate(60deg);-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}80%{-o-transform:rotate(60deg) translateY(0);opacity:1;-o-transform-origin:top left;-o-animation-timing-function:ease-in-out}100%{-o-transform:translateY(700px);opacity:0}}.hinge{-webkit-animation-name:hinge;-moz-animation-name:hinge;-o-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg)}}@-moz-keyframes rollIn{0%{opacity:0;-moz-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-moz-transform:translateX(0px) rotate(0deg)}}@-o-keyframes rollIn{0%{opacity:0;-o-transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-o-transform:translateX(0px) rotate(0deg)}}.rollIn{-webkit-animation-name:rollIn;-moz-animation-name:rollIn;-o-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg)}}@-moz-keyframes rollOut{0%{opacity:1;-moz-transform:translateX(0px) rotate(0deg)}100%{opacity:0;-moz-transform:translateX(100%) rotate(120deg)}}@-o-keyframes rollOut{0%{opacity:1;-o-transform:translateX(0px) rotate(0deg)}100%{opacity:0;-o-transform:translateX(100%) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;-moz-animation-name:rollOut;-o-animation-name:rollOut;animation-name:rollOut}@-moz-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-o-keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,100%{opacity:1}25%,75%{opacity:0}}@-moz-keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@-webkit-keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)} +20%,40%,60%,80%{transform:translateX(10px)}}@-o-keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@-moz-keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@-webkit-keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@-o-keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-30px)}60%{transform:translateY(-15px)}}@-moz-keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}@-webkit-keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}@-o-keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}@keyframes tada{0%{transform:scale(1)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}@-moz-keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0deg)}}@-webkit-keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0deg)}}@-o-keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0deg)}}@keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0deg)}}@-moz-keyframes wobble{0%{transform:translateX(0%)}15%{transform:translateX(-25%) rotate(-5deg)}30%{transform:translateX(20%) rotate(3deg)}45%{transform:translateX(-15%) rotate(-3deg)}60%{transform:translateX(10%) rotate(2deg)}75%{transform:translateX(-5%) rotate(-1deg)}100%{transform:translateX(0%)}}@-webkit-keyframes wobble{0%{transform:translateX(0%)}15%{transform:translateX(-25%) rotate(-5deg)}30%{transform:translateX(20%) rotate(3deg)}45%{transform:translateX(-15%) rotate(-3deg)}60%{transform:translateX(10%) rotate(2deg)}75%{transform:translateX(-5%) rotate(-1deg)}100%{transform:translateX(0%)}}@-o-keyframes wobble{0%{transform:translateX(0%)}15%{transform:translateX(-25%) rotate(-5deg)}30%{transform:translateX(20%) rotate(3deg)}45%{transform:translateX(-15%) rotate(-3deg)}60%{transform:translateX(10%) rotate(2deg)}75%{transform:translateX(-5%) rotate(-1deg)}100%{transform:translateX(0%)}}@keyframes wobble{0%{transform:translateX(0%)}15%{transform:translateX(-25%) rotate(-5deg)}30%{transform:translateX(20%) rotate(3deg)}45%{transform:translateX(-15%) rotate(-3deg)}60%{transform:translateX(10%) rotate(2deg)}75%{transform:translateX(-5%) rotate(-1deg)}100%{transform:translateX(0%)}}@-moz-keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@-webkit-keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@-o-keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}@-moz-keyframes flip{0%{transform:perspective(400px) translateZ(0) rotateY(0) scale(1);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in}80%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);animation-timing-function:ease-in}100%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);animation-timing-function:ease-in}}@-webkit-keyframes flip{0%{transform:perspective(400px) translateZ(0) rotateY(0) scale(1);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in}80%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);animation-timing-function:ease-in}100%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);animation-timing-function:ease-in} +}@-o-keyframes flip{0%{transform:perspective(400px) translateZ(0) rotateY(0) scale(1);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in}80%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);animation-timing-function:ease-in}100%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);animation-timing-function:ease-in}}@keyframes flip{0%{transform:perspective(400px) translateZ(0) rotateY(0) scale(1);animation-timing-function:ease-out}40%{transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);animation-timing-function:ease-out}50%{transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);animation-timing-function:ease-in}80%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(0.95);animation-timing-function:ease-in}100%{transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);animation-timing-function:ease-in}}@-moz-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}40%{transform:perspective(400px) rotateX(-10deg)}70%{transform:perspective(400px) rotateX(10deg)}100%{transform:perspective(400px) rotateX(0deg);opacity:1}}@-webkit-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}40%{transform:perspective(400px) rotateX(-10deg)}70%{transform:perspective(400px) rotateX(10deg)}100%{transform:perspective(400px) rotateX(0deg);opacity:1}}@-o-keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}40%{transform:perspective(400px) rotateX(-10deg)}70%{transform:perspective(400px) rotateX(10deg)}100%{transform:perspective(400px) rotateX(0deg);opacity:1}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}40%{transform:perspective(400px) rotateX(-10deg)}70%{transform:perspective(400px) rotateX(10deg)}100%{transform:perspective(400px) rotateX(0deg);opacity:1}}@-moz-keyframes flipOutX{0%{transform:perspective(400px) rotateX(0deg);opacity:1}100%{transform:perspective(400px) rotateX(90deg);opacity:0}}@-webkit-keyframes flipOutX{0%{transform:perspective(400px) rotateX(0deg);opacity:1}100%{transform:perspective(400px) rotateX(90deg);opacity:0}}@-o-keyframes flipOutX{0%{transform:perspective(400px) rotateX(0deg);opacity:1}100%{transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{transform:perspective(400px) rotateX(0deg);opacity:1}100%{transform:perspective(400px) rotateX(90deg);opacity:0}}@-moz-keyframes flipInY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}40%{transform:perspective(400px) rotateY(-10deg)}70%{transform:perspective(400px) rotateY(10deg)}100%{transform:perspective(400px) rotateY(0deg);opacity:1}}@-webkit-keyframes flipInY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}40%{transform:perspective(400px) rotateY(-10deg)}70%{transform:perspective(400px) rotateY(10deg)}100%{transform:perspective(400px) rotateY(0deg);opacity:1}}@-o-keyframes flipInY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}40%{transform:perspective(400px) rotateY(-10deg)}70%{transform:perspective(400px) rotateY(10deg)}100%{transform:perspective(400px) rotateY(0deg);opacity:1}}@keyframes flipInY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}40%{transform:perspective(400px) rotateY(-10deg)}70%{transform:perspective(400px) rotateY(10deg)}100%{transform:perspective(400px) rotateY(0deg);opacity:1}}@-moz-keyframes flipOutY{0%{transform:perspective(400px) rotateY(0deg);opacity:1}100%{transform:perspective(400px) rotateY(90deg);opacity:0}}@-webkit-keyframes flipOutY{0%{transform:perspective(400px) rotateY(0deg);opacity:1}100%{transform:perspective(400px) rotateY(90deg);opacity:0}}@-o-keyframes flipOutY{0%{transform:perspective(400px) rotateY(0deg);opacity:1}100%{transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{transform:perspective(400px) rotateY(0deg);opacity:1}100%{transform:perspective(400px) rotateY(90deg);opacity:0}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-o-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}@-moz-keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}100%{opacity:1;transform:translateY(0)}}@-o-keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)} +100%{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}100%{opacity:1;transform:translateY(0)}}@-moz-keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}@-webkit-keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}@-o-keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}@-moz-keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}@-webkit-keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}@-o-keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}@-moz-keyframes fadeInUpBig{0%{opacity:0;transform:translateY(2000px)}100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes fadeInUpBig{0%{opacity:0;transform:translateY(2000px)}100%{opacity:1;transform:translateY(0)}}@-o-keyframes fadeInUpBig{0%{opacity:0;transform:translateY(2000px)}100%{opacity:1;transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;transform:translateY(2000px)}100%{opacity:1;transform:translateY(0)}}@-moz-keyframes fadeInDownBig{0%{opacity:0;transform:translateY(-2000px)}100%{opacity:1;transform:translateY(0)}}@-webkit-keyframes fadeInDownBig{0%{opacity:0;transform:translateY(-2000px)}100%{opacity:1;transform:translateY(0)}}@-o-keyframes fadeInDownBig{0%{opacity:0;transform:translateY(-2000px)}100%{opacity:1;transform:translateY(0)}}@keyframes fadeInDownBig{0%{opacity:0;transform:translateY(-2000px)}100%{opacity:1;transform:translateY(0)}}@-moz-keyframes fadeInLeftBig{0%{opacity:0;transform:translateX(-2000px)}100%{opacity:1;transform:translateX(0)}}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;transform:translateX(-2000px)}100%{opacity:1;transform:translateX(0)}}@-o-keyframes fadeInLeftBig{0%{opacity:0;transform:translateX(-2000px)}100%{opacity:1;transform:translateX(0)}}@keyframes fadeInLeftBig{0%{opacity:0;transform:translateX(-2000px)}100%{opacity:1;transform:translateX(0)}}@-moz-keyframes fadeInRightBig{0%{opacity:0;transform:translateX(2000px)}100%{opacity:1;transform:translateX(0)}}@-webkit-keyframes fadeInRightBig{0%{opacity:0;transform:translateX(2000px)}100%{opacity:1;transform:translateX(0)}}@-o-keyframes fadeInRightBig{0%{opacity:0;transform:translateX(2000px)}100%{opacity:1;transform:translateX(0)}}@keyframes fadeInRightBig{0%{opacity:0;transform:translateX(2000px)}100%{opacity:1;transform:translateX(0)}}@-moz-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-o-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-20px)}}@-webkit-keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-20px)}}@-o-keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-20px)}}@keyframes fadeOutUp{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-20px)}}@-moz-keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(20px)}}@-webkit-keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(20px)}}@-o-keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(20px)}}@-moz-keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-20px)}}@-webkit-keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-20px)}}@-o-keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-20px)}}@-moz-keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(20px)}}@-webkit-keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(20px)}}@-o-keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(20px)}}@-moz-keyframes fadeOutUpBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@-o-keyframes fadeOutUpBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)} +}@keyframes fadeOutUpBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@-moz-keyframes fadeOutDownBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(2000px)}}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(2000px)}}@-o-keyframes fadeOutDownBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(2000px)}}@-moz-keyframes fadeOutLeftBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@-o-keyframes fadeOutLeftBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@-moz-keyframes fadeOutRightBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@-o-keyframes fadeOutRightBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@-moz-keyframes slideInDown{0%{opacity:0;transform:translateY(-2000px)}100%{transform:translateY(0)}}@-webkit-keyframes slideInDown{0%{opacity:0;transform:translateY(-2000px)}100%{transform:translateY(0)}}@-o-keyframes slideInDown{0%{opacity:0;transform:translateY(-2000px)}100%{transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-2000px)}100%{transform:translateY(0)}}@-moz-keyframes slideInLeft{0%{opacity:0;transform:translateX(-2000px)}100%{transform:translateX(0)}}@-webkit-keyframes slideInLeft{0%{opacity:0;transform:translateX(-2000px)}100%{transform:translateX(0)}}@-o-keyframes slideInLeft{0%{opacity:0;transform:translateX(-2000px)}100%{transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-2000px)}100%{transform:translateX(0)}}@-moz-keyframes slideInRight{0%{opacity:0;transform:translateX(2000px)}100%{transform:translateX(0)}}@-webkit-keyframes slideInRight{0%{opacity:0;transform:translateX(2000px)}100%{transform:translateX(0)}}@-o-keyframes slideInRight{0%{opacity:0;transform:translateX(2000px)}100%{transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(2000px)}100%{transform:translateX(0)}}@-moz-keyframes slideOutUp{0%{transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@-webkit-keyframes slideOutUp{0%{transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@-o-keyframes slideOutUp{0%{transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@keyframes slideOutUp{0%{transform:translateY(0)}100%{opacity:0;transform:translateY(-2000px)}}@-moz-keyframes slideOutLeft{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@-webkit-keyframes slideOutLeft{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@-o-keyframes slideOutLeft{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(-2000px)}}@-moz-keyframes slideOutRight{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@-webkit-keyframes slideOutRight{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@-o-keyframes slideOutRight{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@keyframes slideOutRight{0%{transform:translateX(0)}100%{opacity:0;transform:translateX(2000px)}}@-moz-keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-webkit-keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-o-keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-moz-keyframes bounceInUp{0%{opacity:0;transform:translateY(2000px)}60%{opacity:1;transform:translateY(-30px)}80%{transform:translateY(10px)}100%{transform:translateY(0)}}@-webkit-keyframes bounceInUp{0%{opacity:0;transform:translateY(2000px)}60%{opacity:1;transform:translateY(-30px)}80%{transform:translateY(10px)}100%{transform:translateY(0)}}@-o-keyframes bounceInUp{0%{opacity:0;transform:translateY(2000px)}60%{opacity:1;transform:translateY(-30px)}80%{transform:translateY(10px)}100%{transform:translateY(0)}}@keyframes bounceInUp{0%{opacity:0;transform:translateY(2000px)} +60%{opacity:1;transform:translateY(-30px)}80%{transform:translateY(10px)}100%{transform:translateY(0)}}@-moz-keyframes bounceInDown{0%{opacity:0;transform:translateY(-2000px)}60%{opacity:1;transform:translateY(30px)}80%{transform:translateY(-10px)}100%{transform:translateY(0)}}@-webkit-keyframes bounceInDown{0%{opacity:0;transform:translateY(-2000px)}60%{opacity:1;transform:translateY(30px)}80%{transform:translateY(-10px)}100%{transform:translateY(0)}}@-o-keyframes bounceInDown{0%{opacity:0;transform:translateY(-2000px)}60%{opacity:1;transform:translateY(30px)}80%{transform:translateY(-10px)}100%{transform:translateY(0)}}@keyframes bounceInDown{0%{opacity:0;transform:translateY(-2000px)}60%{opacity:1;transform:translateY(30px)}80%{transform:translateY(-10px)}100%{transform:translateY(0)}}@-moz-keyframes bounceInLeft{0%{opacity:0;transform:translateX(-2000px)}60%{opacity:1;transform:translateX(30px)}80%{transform:translateX(-10px)}100%{transform:translateX(0)}}@-webkit-keyframes bounceInLeft{0%{opacity:0;transform:translateX(-2000px)}60%{opacity:1;transform:translateX(30px)}80%{transform:translateX(-10px)}100%{transform:translateX(0)}}@-o-keyframes bounceInLeft{0%{opacity:0;transform:translateX(-2000px)}60%{opacity:1;transform:translateX(30px)}80%{transform:translateX(-10px)}100%{transform:translateX(0)}}@keyframes bounceInLeft{0%{opacity:0;transform:translateX(-2000px)}60%{opacity:1;transform:translateX(30px)}80%{transform:translateX(-10px)}100%{transform:translateX(0)}}@-moz-keyframes bounceInRight{0%{opacity:0;transform:translateX(2000px)}60%{opacity:1;transform:translateX(-30px)}80%{transform:translateX(10px)}100%{transform:translateX(0)}}@-webkit-keyframes bounceInRight{0%{opacity:0;transform:translateX(2000px)}60%{opacity:1;transform:translateX(-30px)}80%{transform:translateX(10px)}100%{transform:translateX(0)}}@-o-keyframes bounceInRight{0%{opacity:0;transform:translateX(2000px)}60%{opacity:1;transform:translateX(-30px)}80%{transform:translateX(10px)}100%{transform:translateX(0)}}@keyframes bounceInRight{0%{opacity:0;transform:translateX(2000px)}60%{opacity:1;transform:translateX(-30px)}80%{transform:translateX(10px)}100%{transform:translateX(0)}}@-moz-keyframes bounceOut{0%{transform:scale(1)}25%{transform:scale(0.95)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(0.3)}}@-webkit-keyframes bounceOut{0%{transform:scale(1)}25%{transform:scale(0.95)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(0.3)}}@-o-keyframes bounceOut{0%{transform:scale(1)}25%{transform:scale(0.95)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(0.3)}}@keyframes bounceOut{0%{transform:scale(1)}25%{transform:scale(0.95)}50%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:scale(0.3)}}@-moz-keyframes bounceOutUp{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(20px)}100%{opacity:0;transform:translateY(-2000px)}}@-webkit-keyframes bounceOutUp{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(20px)}100%{opacity:0;transform:translateY(-2000px)}}@-o-keyframes bounceOutUp{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(20px)}100%{opacity:0;transform:translateY(-2000px)}}@keyframes bounceOutUp{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(20px)}100%{opacity:0;transform:translateY(-2000px)}}@-moz-keyframes bounceOutDown{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(2000px)}}@-webkit-keyframes bounceOutDown{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(2000px)}}@-o-keyframes bounceOutDown{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(2000px)}}@keyframes bounceOutDown{0%{transform:translateY(0)}20%{opacity:1;transform:translateY(-20px)}100%{opacity:0;transform:translateY(2000px)}}@-moz-keyframes bounceOutLeft{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(20px)}100%{opacity:0;transform:translateX(-2000px)}}@-webkit-keyframes bounceOutLeft{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(20px)}100%{opacity:0;transform:translateX(-2000px)}}@-o-keyframes bounceOutLeft{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(20px)}100%{opacity:0;transform:translateX(-2000px)}}@keyframes bounceOutLeft{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(20px)}100%{opacity:0;transform:translateX(-2000px)}}@-moz-keyframes bounceOutRight{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(-20px)}100%{opacity:0;transform:translateX(2000px)}}@-webkit-keyframes bounceOutRight{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(-20px)}100%{opacity:0;transform:translateX(2000px)}}@-o-keyframes bounceOutRight{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(-20px)}100%{opacity:0;transform:translateX(2000px)}}@keyframes bounceOutRight{0%{transform:translateX(0)}20%{opacity:1;transform:translateX(-20px)} +100%{opacity:0;transform:translateX(2000px)}}@-moz-keyframes rotateIn{0%{transform-origin:center center;transform:rotate(-200deg);opacity:0}100%{transform-origin:center center;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateIn{0%{transform-origin:center center;transform:rotate(-200deg);opacity:0}100%{transform-origin:center center;transform:rotate(0);opacity:1}}@-o-keyframes rotateIn{0%{transform-origin:center center;transform:rotate(-200deg);opacity:0}100%{transform-origin:center center;transform:rotate(0);opacity:1}}@keyframes rotateIn{0%{transform-origin:center center;transform:rotate(-200deg);opacity:0}100%{transform-origin:center center;transform:rotate(0);opacity:1}}@-moz-keyframes rotateInUpLeft{0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInUpLeft{0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-o-keyframes rotateInUpLeft{0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@keyframes rotateInUpLeft{0%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-moz-keyframes rotateInDownLeft{0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInDownLeft{0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-o-keyframes rotateInDownLeft{0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@keyframes rotateInDownLeft{0%{transform-origin:left bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:left bottom;transform:rotate(0);opacity:1}}@-moz-keyframes rotateInUpRight{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInUpRight{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-o-keyframes rotateInUpRight{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@keyframes rotateInUpRight{0%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-moz-keyframes rotateInDownRight{0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-webkit-keyframes rotateInDownRight{0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-o-keyframes rotateInDownRight{0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@keyframes rotateInDownRight{0%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}100%{transform-origin:right bottom;transform:rotate(0);opacity:1}}@-moz-keyframes rotateOut{0%{transform-origin:center center;transform:rotate(0);opacity:1}100%{transform-origin:center center;transform:rotate(200deg);opacity:0}}@-webkit-keyframes rotateOut{0%{transform-origin:center center;transform:rotate(0);opacity:1}100%{transform-origin:center center;transform:rotate(200deg);opacity:0}}@-o-keyframes rotateOut{0%{transform-origin:center center;transform:rotate(0);opacity:1}100%{transform-origin:center center;transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{transform-origin:center center;transform:rotate(0);opacity:1}100%{transform-origin:center center;transform:rotate(200deg);opacity:0}}@-moz-keyframes rotateOutUpLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{-transform-origin:left bottom;-transform:rotate(-90deg);opacity:0}}@-webkit-keyframes rotateOutUpLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{-transform-origin:left bottom;-transform:rotate(-90deg);opacity:0}}@-o-keyframes rotateOutUpLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{-transform-origin:left bottom;-transform:rotate(-90deg);opacity:0}}@keyframes rotateOutUpLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{-transform-origin:left bottom;-transform:rotate(-90deg);opacity:0}}@-moz-keyframes rotateOutDownLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}}@-webkit-keyframes rotateOutDownLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}}@-o-keyframes rotateOutDownLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1} +100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}}@keyframes rotateOutDownLeft{0%{transform-origin:left bottom;transform:rotate(0);opacity:1}100%{transform-origin:left bottom;transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateOutUpRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}@-webkit-keyframes rotateOutUpRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}@-o-keyframes rotateOutUpRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(90deg);opacity:0}}@-moz-keyframes rotateOutDownRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}}@-webkit-keyframes rotateOutDownRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}}@-o-keyframes rotateOutDownRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}}@keyframes rotateOutDownRight{0%{transform-origin:right bottom;transform:rotate(0);opacity:1}100%{transform-origin:right bottom;transform:rotate(-90deg);opacity:0}}@-moz-keyframes lightSpeedIn{0%{transform:translateX(100%) skewX(-30deg);opacity:0}60%{transform:translateX(-20%) skewX(30deg);opacity:1}80%{transform:translateX(0%) skewX(-15deg);opacity:1}100%{transform:translateX(0%) skewX(0deg);opacity:1}}@-webkit-keyframes lightSpeedIn{0%{transform:translateX(100%) skewX(-30deg);opacity:0}60%{transform:translateX(-20%) skewX(30deg);opacity:1}80%{transform:translateX(0%) skewX(-15deg);opacity:1}100%{transform:translateX(0%) skewX(0deg);opacity:1}}@-o-keyframes lightSpeedIn{0%{transform:translateX(100%) skewX(-30deg);opacity:0}60%{transform:translateX(-20%) skewX(30deg);opacity:1}80%{transform:translateX(0%) skewX(-15deg);opacity:1}100%{transform:translateX(0%) skewX(0deg);opacity:1}}@keyframes lightSpeedIn{0%{transform:translateX(100%) skewX(-30deg);opacity:0}60%{transform:translateX(-20%) skewX(30deg);opacity:1}80%{transform:translateX(0%) skewX(-15deg);opacity:1}100%{transform:translateX(0%) skewX(0deg);opacity:1}}@-moz-keyframes lightSpeedOut{0%{transform:translateX(0%) skewX(0deg);opacity:1}100%{transform:translateX(100%) skewX(-30deg);opacity:0}}@-webkit-keyframes lightSpeedOut{0%{transform:translateX(0%) skewX(0deg);opacity:1}100%{transform:translateX(100%) skewX(-30deg);opacity:0}}@-o-keyframes lightSpeedOut{0%{transform:translateX(0%) skewX(0deg);opacity:1}100%{transform:translateX(100%) skewX(-30deg);opacity:0}}@keyframes lightSpeedOut{0%{transform:translateX(0%) skewX(0deg);opacity:1}100%{transform:translateX(100%) skewX(-30deg);opacity:0}}@-moz-keyframes hinge{0%{transform:rotate(0);transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out}80%{transform:rotate(60deg) translateY(0);opacity:1;transform-origin:top left;animation-timing-function:ease-in-out}100%{transform:translateY(700px);opacity:0}}@-webkit-keyframes hinge{0%{transform:rotate(0);transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out}80%{transform:rotate(60deg) translateY(0);opacity:1;transform-origin:top left;animation-timing-function:ease-in-out}100%{transform:translateY(700px);opacity:0}}@-o-keyframes hinge{0%{transform:rotate(0);transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out}80%{transform:rotate(60deg) translateY(0);opacity:1;transform-origin:top left;animation-timing-function:ease-in-out}100%{transform:translateY(700px);opacity:0}}@keyframes hinge{0%{transform:rotate(0);transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate(80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%{transform:rotate(60deg);transform-origin:top left;animation-timing-function:ease-in-out}80%{transform:rotate(60deg) translateY(0);opacity:1;transform-origin:top left;animation-timing-function:ease-in-out}100%{transform:translateY(700px);opacity:0}}@-moz-keyframes rollIn{0%{opacity:0;transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;transform:translateX(0px) rotate(0deg)} +}@-webkit-keyframes rollIn{0%{opacity:0;transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;transform:translateX(0px) rotate(0deg)}}@-o-keyframes rollIn{0%{opacity:0;transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;transform:translateX(0px) rotate(0deg)}}@keyframes rollIn{0%{opacity:0;transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;transform:translateX(0px) rotate(0deg)}}@-moz-keyframes rollOut{0%{opacity:1;transform:translateX(0px) rotate(0deg)}100%{opacity:0;transform:translateX(100%) rotate(120deg)}}@-webkit-keyframes rollOut{0%{opacity:1;transform:translateX(0px) rotate(0deg)}100%{opacity:0;transform:translateX(100%) rotate(120deg)}}@-o-keyframes rollOut{0%{opacity:1;transform:translateX(0px) rotate(0deg)}100%{opacity:0;transform:translateX(100%) rotate(120deg)}}@keyframes rollOut{0%{opacity:1;transform:translateX(0px) rotate(0deg)}100%{opacity:0;transform:translateX(100%) rotate(120deg)}}.article-entry pre,.article-entry .highlight{background:#2d2d2d;padding:15px 20px;border-style:solid;border-color:#ddd;border-width:1px 0;overflow:auto;color:#ccc;line-height:22.400000000000002px}.article-entry .highlight .gutter pre,.article-entry .gist .gist-file .gist-data .line-numbers{color:#666;font-size:.85em}.article-entry pre,.article-entry code{font-family:"Source Code Pro",Consolas,Monaco,Menlo,Consolas,monospace}.article-entry code{background:#eee;text-shadow:0 1px #fff;padding:0 .3em}.article-entry pre code{background:0;text-shadow:none;padding:0}.article-entry .highlight pre{border:0;margin:10;padding:0}.article-entry .highlight table{margin:0;width:auto}.article-entry .highlight td{border:0;padding:0}.article-entry .highlight figcaption{font-size:.85em;color:#999;line-height:1em;margin-bottom:1em}.article-entry .highlight figcaption a{float:right}.article-entry .highlight .gutter pre{text-align:right;padding-right:20px}.article-entry .highlight .line{height:22.400000000000002px}.article-entry .gist{margin:0 -20px;border-style:solid;border-color:#ddd;border-width:1px 0;background:#2d2d2d;padding:15px 20px 15px 0}.article-entry .gist .gist-file{border:0;font-family:"Source Code Pro",Consolas,Monaco,Menlo,Consolas,monospace;margin:0}.article-entry .gist .gist-file .gist-data{background:0;border:0}.article-entry .gist .gist-file .gist-data .line-numbers{background:0;border:0;padding:0 20px 0 0}.article-entry .gist .gist-file .gist-data .line-data{padding:0!important}.article-entry .gist .gist-file .highlight{margin:0;padding:0;border:0}.article-entry .gist .gist-file .gist-meta{background:#2d2d2d;color:#999;font:.85em "Helvetica Neue",Helvetica,Arial,sans-serif;text-shadow:0;padding:0;margin-top:1em;margin-left:20px}.article-entry .gist .gist-file .gist-meta a{color:#258fb8;font-weight:normal}.article-entry .gist .gist-file .gist-meta a:hover{text-decoration:underline}pre .comment,pre .title{color:#999}pre .variable,pre .attribute,pre .tag,pre .regexp,pre .ruby .constant,pre .xml .tag .title,pre .xml .pi,pre .xml .doctype,pre .html .doctype,pre .css .id,pre .css .class,pre .css .pseudo{color:#f2777a}pre .number,pre .preprocessor,pre .built_in,pre .literal,pre .params,pre .constant{color:#f99157}pre .class,pre .ruby .class .title,pre .css .rules .attribute{color:#9c9}pre .string,pre .value,pre .inheritance,pre .header,pre .ruby .symbol,pre .xml .cdata{color:#9c9}pre .css .hexcolor{color:#6cc}pre .function,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword,pre .perl .sub,pre .javascript .title,pre .coffeescript .title{color:#69c}pre .keyword,pre .javascript .function{color:#c9c}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after{content:"";content:none}q:before,q:after{content:"";content:none}figure table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed;text-align:left;border-width:0;margin:auto}figure th,figure td{padding:0}body{width:100%;*zoom:1}body:before,body:after{content:"";display:table}body:after{clear:both}html,body{height:100%}html{height:100%;max-height:100%}body{font-family:"ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;font-size:1em;color:#666;-webkit-font-smoothing:antialiased} +::selection{background:rgba(37,104,163,0.2)}::-moz-selection{background:rgba(37,104,163,0.2)}a{text-decoration:none;color:#4e97d8}a:hover{color:#4e97d8;-o-transition:.5s;-ms-transition:.5s;-moz-transition:.5s;-webkit-transition:.5s}h1,h2,h3,h4,h5{margin-top:1em;margin-bottom:.5em;font-family:"ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;font-weight:lighter;color:#333;-webkit-font-smoothing:antialiased}h1{margin-top:0;font-size:2.5em;line-height:1.2em;letter-spacing:.05em}h2{font-size:2em}h3{font-size:1.6em}h4{font-size:1.2em}h4{font-size:1.1em}h5{font-size:1em}p{margin-bottom:1.3em;line-height:1.7em}strong{font-weight:bold}em{font-style:italic}blockquote{padding:10px 20px;margin:0 0 20px;font-family:"ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;font-weight:lighter;font-size:1em;border-left:3px solid #4e97d8}blockquote p:last-child{margin-bottom:0}ol,ul{margin:0 0 1.3em 2.5em}ol li,ul li{margin:0 0 .2em 0;line-height:1.6em}ol ol,ol ul,ul ol,ul ul{margin:.1em 0 .2em 2em}ol{list-style-type:decimal}ul{list-style-type:disc}code{padding:.1em .4em;background:#e8f2fb;border:1px solid #c9e1f6;border-radius:3px;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;font-size:.9em;vertical-align:bottom;word-wrap:break-word}pre{margin-bottom:1.3em;padding:1em 2.5%;background:#e8f2fb;border:1px solid #c9e1f6;border-radius:3px;font-family:Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;font-size:.9em;font-weight:normal;line-height:1.7em;overflow:scroll}pre code{padding:0;background:0;border:0;word-wrap:normal}table{color:#333;font-size:.9em;text-align:center;line-height:40px;border-spacing:0;border:2px solid #4e97d8;width:90%;margin:50px auto}thead tr:first-child{background-color:#4e97d8;color:#f8f8f8;border:0}th{font-weight:bold}th,td{padding:0 8px 0 8px}thead tr:last-child th{border-bottom:1px solid #ddd}tbody tr:last-child td{border:0}tbody td{border-bottom:1px solid #ddd;font-size:.9em}.date,.time,.author,.tags{font-size:.8em;color:#c7c7c7}.date a,.time a,.author a,.tags a{color:#666}.date a:hover,.time a:hover,.author a:hover,.tags a:hover{color:#4e97d8}.excerpt{margin:0;font-size:.9em;color:#999}.intro{font-family:"ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;font-size:1.2em;font-weight:lighter;color:#999}.block-heading{display:inline;float:left;width:940px;margin:0 10px;position:relative;bottom:-15px;font-size:.8em;font-weight:bold;text-align:center;text-transform:uppercase;letter-spacing:1px}.label{position:relative;display:inline-block;padding:8px 18px 9px 18px;background:#4e97d8;border-radius:3px;text-align:center;color:#fff}.container{position:relative;z-index:500;width:940px;margin:0 auto}.content-wrapper{z-index:800;width:70%;margin-left:30%}.content-wrapper__inner{margin:0 10%;padding:50px 0}.footer{display:block;padding:2em 0 0 0;border-top:2px solid #ddd;font-size:.7em;color:#b3b3b3}.footer__copyright{display:block;margin-bottom:.7em}.footer__copyright a{color:#a6a6a6;text-decoration:underline}.footer__copyright a:hover{color:#4e97d8}.avatar,.logo{border-radius:50%;border:3px solid #fff;box-shadow:0 0 1px 1px rgba(0,0,0,0.3)}hr{border:0}.section-title__divider{width:30%;margin:2.2em 0 2.1em 0;border-top:1px solid #ddd}.hidden{display:none!important}.panel{display:table;width:100%;height:100%}.panel__vertical{display:table-cell;vertical-align:middle}.panel-title{font-family:"Old English Text MT","Engravers' Old English BT","Lato","PingFang SC","Microsoft YaHei",sans-serif;margin:0 0 5px 0;font-size:2.5em;color:#fff}.panel-subtitle{font-family:"ff-tisa-web-pro-1","ff-tisa-web-pro-2","Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;font-size:1.2em;font-weight:lighter;letter-spacing:3px;color:#ccc;-webkit-font-smoothing:antialiased}.iUp{opacity:0;-webkit-transform:translate3d(0,80px,0);-moz-transform:translate3d(0,80px,0);-ms-transform:translate3d(0,80px,0);-o-transform:translate3d(0,80px,0);transform:translate3d(0,80px,0);-webkit-transition:all 2s cubic-bezier(0.19,1,0.22,1);-moz-transition:all 2s cubic-bezier(0.19,1,0.22,1);transition:all 2s cubic-bezier(0.19,1,0.22,1)} +.iUp.up{opacity:1;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.panel-cover{display:block;position:fixed;z-index:900;width:100%;max-width:none;height:100%;background:center center no-repeat #666;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:width .6s ease;-moz-transition:width .6s ease;transition:width .6s ease}.panel-cover--collapsed{width:30%}.panel-cover--collapsed .iUp{-webkit-transition:all 0 cubic-bezier(0.19,1,0.22,1);-moz-transition:all 0 cubic-bezier(0.19,1,0.22,1);transition:all 0 cubic-bezier(0.19,1,0.22,1)}.panel-cover--overlay{display:block;position:absolute;top:0;right:0;bottom:0;left:0;background-color:#000;z-index:1;-moz-opacity:.55;opacity:.55}.panel-cover__logo{margin-bottom:.2em}.panel-cover__description{margin:0 30px}.panel-cover__divider{width:50%;margin:20px auto;border-top:1px solid rgba(255,255,255,0.14)}.panel-cover__divider--secondary{width:15%}.panel-main{display:table;width:100%;height:100%}.panel-main__inner{display:table-cell;vertical-align:middle;position:relative;z-index:800;padding:0 60px}.panel-main__content{max-width:620px;margin:0 auto}.panel-main__content--fixed{width:480px;transition:width 1s;-webkit-transition:width 1s}.panel-inverted{font-weight:100;text-align:center;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,0.4)}.panel-inverted a{color:#fff}.cover-navigation{margin-top:42px}.cover-navigation--social{margin-left:30px}.btn,.navigation__item a{padding:10px 20px;border:1px solid #4e97d8;border-radius:20px;font-size:.9em;font-weight:bold;letter-spacing:1px;text-shadow:none;color:#4e97d8;-webkit-font-smoothing:antialiased}.btn:hover,.navigation__item a:hover{color:#4e97d8;border-color:#4e97d8}.btn-border-small{border:1px solid #4e97d8;border-radius:20px;padding:6px 8px;font-size:.8em;margin-left:10px}.btn-secondary{border-color:#5ba4e5;color:#5ba4e5}.btn-secondary:hover{color:#217fd2;border-color:#217fd2}.btn-tertiary{border-color:#999;color:#999}.btn-tertiary:hover{color:#737373;border-color:#737373}.btn-large{padding:10px 24px;font-size:1.1em}.btn-small{padding:8px 12px;font-size:.7em}.btn-mobile-menu{display:none;position:fixed;z-index:9999;top:0;right:0;left:0;width:100%;height:35px;background:rgba(51,51,51,0.98);border-bottom:1px solid rgba(255,255,255,0.1);text-align:center}.btn-mobile-menu__icon,.btn-mobile-close__icon{position:relative;top:10px;color:#fff}nav{display:inline-block;position:relative}.navigation{display:inline-block;float:left;position:relative;margin:0;list-style-type:none}.navigation__item{display:inline-block;margin:5px 1px 0 0;line-height:1em}.navigation__item a{display:block;position:relative;border-color:#fff;color:#fff;opacity:.8}.navigation__item a:hover{color:#fff;border-color:#fff;opacity:1}.navigation--social a{border:0;padding:6px 8px 6px 9px}.navigation--social a .label{display:none}.navigation--social a .icon{display:block;font-size:1.7em}.pagination{display:block;margin:0 0 4em 0}.pagination__page-number{margin:0;font-size:.8em;color:#999}.pagination__newer{margin-right:1em}.pagination__older{margin-left:1em}i{font-family:"entypo";font-weight:normal;font-style:normal;font-size:18px}.social{font-size:22px}.icon-social{font-family:"entypo-social";font-size:22px;display:block;position:relative}*:focus{outline:0}@media all and (max-width:1100px){.panel-cover__logo{width:70px}.panel-title{font-size:2em}.panel-subtitle{font-size:1em}.panel-cover__description{margin:0 10px;font-size:.9em}.navigation--social{margin-top:5px;margin-left:0}}@media all and (max-width:960px){.btn-mobile-menu{display:block}.panel-main{display:table;position:relative}.panel-cover--collapsed{width:100%;max-width:none}.panel-main__inner{display:table-cell;padding:60px 10%}.panel-cover__description{display:block;max-width:600px;margin:0 auto}.panel-cover__divider--secondary{display:none}.panel-cover{width:100%;height:100%;background-position:center center}.panel-cover.panel-cover--collapsed{display:block;position:relative;height:auto;padding:0;background-position:center center}.panel-cover.panel-cover--collapsed .panel-main__inner{display:block;padding:70px 0 30px 0}.panel-cover.panel-cover--collapsed .panel-cover__logo{width:60px;border-width:2px}.panel-cover.panel-cover--collapsed .panel-cover__description{display:none}.panel-cover.panel-cover--collapsed .panel-cover__divider{display:none;margin:1em auto}.navigation-wrapper{display:none;position:fixed;top:0;right:0;left:0;width:100%;padding:20px 0;background:rgba(51,51,51,0.98);border-bottom:1px solid rgba(255,255,255,0.15)}.navigation-wrapper.visible{display:block}.cover-navigation{display:block;position:relative;float:left;clear:left;width:100%} +.cover-navigation .navigation{display:block;width:100%}.cover-navigation .navigation li{width:80%;margin-bottom:.4em}.cover-navigation.navigation--social{padding-top:5px}.cover-navigation.navigation--social .navigation li{display:inline-block;width:20%}.content-wrapper{width:80%;max-width:none;margin:0 auto}.content-wrapper__inner{margin-right:0;margin-left:0}.navigation__item{width:100%;margin:0 0 .4em 0}}@media all and (max-width:340px){.panel-main__inner{padding:0 5%}.panel-title{margin-bottom:.1em;font-size:1.5em}.panel-subtitle{font-size:.9em}.btn,.navigation__item a{display:block;margin-bottom:.4em}}.remark{position:absolute;z-index:900;bottom:0;right: 20px;text-align:center;color:#fff;opacity:.9}.power{letter-spacing:0;font-size:10px;line-height:16px;}.beian{position:absolute;z-index:900;bottom:0;right:5px;text-align:center;color:#fff;opacity:.25!important;padding-bottom:3px;letter-spacing:-3px;font-size:0}.gwab,.icp{display:inline-block;color:#fff!important;letter-spacing:0;font-size:10px;line-height:16px;margin:0;vertical-align:middle}.gwab{background:url(/img/beian.png) no-repeat;background-size:12px 12px;background-position:3px 2px;padding-left:18px}@-webkit-keyframes btnGroups{0%{-webkit-transform:scale(1.2,0.8)}1%{-webkit-transform:scale(1.18,0.82)}2%{-webkit-transform:scale(1.16,0.84)}3%{-webkit-transform:scale(1.13,0.87)}4%{-webkit-transform:scale(1.1,0.9)}5%{-webkit-transform:scale(1.07,0.93)}6%{-webkit-transform:scale(1.04,0.96)}7%{-webkit-transform:scale(1.01,0.99)}8%{-webkit-transform:scale(0.99,1.01)}9%{-webkit-transform:scale(0.97,1.03)}10%{-webkit-transform:scale(0.95,1.05)}11%{-webkit-transform:scale(0.94,1.06)}12%{-webkit-transform:scale(0.93,1.07)}13%{-webkit-transform:scale(0.93,1.07)}14%{-webkit-transform:scale(0.93,1.07)}15%{-webkit-transform:scale(0.93,1.07)}16%{-webkit-transform:scale(0.94,1.06)}17%{-webkit-transform:scale(0.94,1.06)}18%{-webkit-transform:scale(0.95,1.05)}19%{-webkit-transform:scale(0.96,1.04)}20%{-webkit-transform:scale(0.98,1.02)}21%{-webkit-transform:scale(0.99,1.01)}22%{-webkit-transform:scale(1,1)}23%{-webkit-transform:scale(1,1)}24%{-webkit-transform:scale(1.01,0.99)}25%{-webkit-transform:scale(1.02,0.98)}26%{-webkit-transform:scale(1.02,0.98)}27%{-webkit-transform:scale(1.02,0.98)}28%{-webkit-transform:scale(1.03,0.97)}29%{-webkit-transform:scale(1.03,0.97)}30%{-webkit-transform:scale(1.02,0.98)}31%{-webkit-transform:scale(1.02,0.98)}32%{-webkit-transform:scale(1.02,0.98)}33%{-webkit-transform:scale(1.02,0.98)}34%{-webkit-transform:scale(1.01,0.99)}35%{-webkit-transform:scale(1.01,0.99)}36%{-webkit-transform:scale(1.01,0.99)}37%{-webkit-transform:scale(1,1)}38%{-webkit-transform:scale(1,1)}39%{-webkit-transform:scale(1,1)}40%{-webkit-transform:scale(0.99,1.01)}41%{-webkit-transform:scale(0.99,1.01)}42%{-webkit-transform:scale(0.99,1.01)}43%{-webkit-transform:scale(0.99,1.01)}44%{-webkit-transform:scale(0.99,1.01)}45%{-webkit-transform:scale(0.99,1.01)}46%{-webkit-transform:scale(0.99,1.01)}47%{-webkit-transform:scale(0.99,1.01)}48%{-webkit-transform:scale(0.99,1.01)}49%{-webkit-transform:scale(1,1)}}@-moz-keyframes btnGroups{0%{-webkit-transform:scale(1.2,0.8);-moz-transform:scale(1.2,0.8);-ms-transform:scale(1.2,0.8);transform:scale(1.2,0.8)}1%{-webkit-transform:scale(1.18,0.82);-moz-transform:scale(1.18,0.82);-ms-transform:scale(1.18,0.82);transform:scale(1.18,0.82)}2%{-webkit-transform:scale(1.16,0.84);-moz-transform:scale(1.16,0.84);-ms-transform:scale(1.16,0.84);transform:scale(1.16,0.84)}3%{-webkit-transform:scale(1.13,0.87);-moz-transform:scale(1.13,0.87);-ms-transform:scale(1.13,0.87);transform:scale(1.13,0.87)}4%{-webkit-transform:scale(1.1,0.9);-moz-transform:scale(1.1,0.9);-ms-transform:scale(1.1,0.9);transform:scale(1.1,0.9)}5%{-webkit-transform:scale(1.07,0.93);-moz-transform:scale(1.07,0.93);-ms-transform:scale(1.07,0.93);transform:scale(1.07,0.93)}6%{-webkit-transform:scale(1.04,0.96);-moz-transform:scale(1.04,0.96);-ms-transform:scale(1.04,0.96);transform:scale(1.04,0.96)}7%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}8%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}9%{-webkit-transform:scale(0.97,1.03);-moz-transform:scale(0.97,1.03);-ms-transform:scale(0.97,1.03);transform:scale(0.97,1.03)}10%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}11%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}12%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}13%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)} +14%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}15%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}16%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}17%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}18%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}19%{-webkit-transform:scale(0.96,1.04);-moz-transform:scale(0.96,1.04);-ms-transform:scale(0.96,1.04);transform:scale(0.96,1.04)}20%{-webkit-transform:scale(0.98,1.02);-moz-transform:scale(0.98,1.02);-ms-transform:scale(0.98,1.02);transform:scale(0.98,1.02)}21%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}22%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}23%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}24%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}25%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}26%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}27%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}28%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}29%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}30%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}31%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}32%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}33%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}34%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}35%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}36%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}37%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}38%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}39%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}40%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}41%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}42%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}43%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}44%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}45%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}46%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}47%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}48%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}49%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}}@-webkit-keyframes btnGroups{0%{-webkit-transform:scale(1.2,0.8);-moz-transform:scale(1.2,0.8);-ms-transform:scale(1.2,0.8);transform:scale(1.2,0.8)}1%{-webkit-transform:scale(1.18,0.82);-moz-transform:scale(1.18,0.82);-ms-transform:scale(1.18,0.82);transform:scale(1.18,0.82)}2%{-webkit-transform:scale(1.16,0.84);-moz-transform:scale(1.16,0.84);-ms-transform:scale(1.16,0.84);transform:scale(1.16,0.84)}3%{-webkit-transform:scale(1.13,0.87);-moz-transform:scale(1.13,0.87);-ms-transform:scale(1.13,0.87);transform:scale(1.13,0.87)} +4%{-webkit-transform:scale(1.1,0.9);-moz-transform:scale(1.1,0.9);-ms-transform:scale(1.1,0.9);transform:scale(1.1,0.9)}5%{-webkit-transform:scale(1.07,0.93);-moz-transform:scale(1.07,0.93);-ms-transform:scale(1.07,0.93);transform:scale(1.07,0.93)}6%{-webkit-transform:scale(1.04,0.96);-moz-transform:scale(1.04,0.96);-ms-transform:scale(1.04,0.96);transform:scale(1.04,0.96)}7%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}8%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}9%{-webkit-transform:scale(0.97,1.03);-moz-transform:scale(0.97,1.03);-ms-transform:scale(0.97,1.03);transform:scale(0.97,1.03)}10%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}11%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}12%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}13%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}14%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}15%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}16%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}17%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}18%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}19%{-webkit-transform:scale(0.96,1.04);-moz-transform:scale(0.96,1.04);-ms-transform:scale(0.96,1.04);transform:scale(0.96,1.04)}20%{-webkit-transform:scale(0.98,1.02);-moz-transform:scale(0.98,1.02);-ms-transform:scale(0.98,1.02);transform:scale(0.98,1.02)}21%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}22%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}23%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}24%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}25%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}26%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}27%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}28%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}29%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}30%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}31%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}32%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}33%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}34%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}35%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}36%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}37%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}38%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}39%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}40%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}41%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}42%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}43%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)} +44%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}45%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}46%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}47%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}48%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}49%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}}@-o-keyframes btnGroups{0%{-webkit-transform:scale(1.2,0.8);-moz-transform:scale(1.2,0.8);-ms-transform:scale(1.2,0.8);transform:scale(1.2,0.8)}1%{-webkit-transform:scale(1.18,0.82);-moz-transform:scale(1.18,0.82);-ms-transform:scale(1.18,0.82);transform:scale(1.18,0.82)}2%{-webkit-transform:scale(1.16,0.84);-moz-transform:scale(1.16,0.84);-ms-transform:scale(1.16,0.84);transform:scale(1.16,0.84)}3%{-webkit-transform:scale(1.13,0.87);-moz-transform:scale(1.13,0.87);-ms-transform:scale(1.13,0.87);transform:scale(1.13,0.87)}4%{-webkit-transform:scale(1.1,0.9);-moz-transform:scale(1.1,0.9);-ms-transform:scale(1.1,0.9);transform:scale(1.1,0.9)}5%{-webkit-transform:scale(1.07,0.93);-moz-transform:scale(1.07,0.93);-ms-transform:scale(1.07,0.93);transform:scale(1.07,0.93)}6%{-webkit-transform:scale(1.04,0.96);-moz-transform:scale(1.04,0.96);-ms-transform:scale(1.04,0.96);transform:scale(1.04,0.96)}7%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}8%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}9%{-webkit-transform:scale(0.97,1.03);-moz-transform:scale(0.97,1.03);-ms-transform:scale(0.97,1.03);transform:scale(0.97,1.03)}10%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}11%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}12%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}13%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}14%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}15%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}16%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}17%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}18%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}19%{-webkit-transform:scale(0.96,1.04);-moz-transform:scale(0.96,1.04);-ms-transform:scale(0.96,1.04);transform:scale(0.96,1.04)}20%{-webkit-transform:scale(0.98,1.02);-moz-transform:scale(0.98,1.02);-ms-transform:scale(0.98,1.02);transform:scale(0.98,1.02)}21%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}22%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}23%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}24%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}25%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}26%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}27%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}28%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}29%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}30%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}31%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}32%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}33%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)} +34%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}35%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}36%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}37%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}38%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}39%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}40%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}41%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}42%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}43%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}44%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}45%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}46%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}47%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}48%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}49%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}}@keyframes btnGroups{0%{-webkit-transform:scale(1.2,0.8);-moz-transform:scale(1.2,0.8);-ms-transform:scale(1.2,0.8);transform:scale(1.2,0.8)}1%{-webkit-transform:scale(1.18,0.82);-moz-transform:scale(1.18,0.82);-ms-transform:scale(1.18,0.82);transform:scale(1.18,0.82)}2%{-webkit-transform:scale(1.16,0.84);-moz-transform:scale(1.16,0.84);-ms-transform:scale(1.16,0.84);transform:scale(1.16,0.84)}3%{-webkit-transform:scale(1.13,0.87);-moz-transform:scale(1.13,0.87);-ms-transform:scale(1.13,0.87);transform:scale(1.13,0.87)}4%{-webkit-transform:scale(1.1,0.9);-moz-transform:scale(1.1,0.9);-ms-transform:scale(1.1,0.9);transform:scale(1.1,0.9)}5%{-webkit-transform:scale(1.07,0.93);-moz-transform:scale(1.07,0.93);-ms-transform:scale(1.07,0.93);transform:scale(1.07,0.93)}6%{-webkit-transform:scale(1.04,0.96);-moz-transform:scale(1.04,0.96);-ms-transform:scale(1.04,0.96);transform:scale(1.04,0.96)}7%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}8%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}9%{-webkit-transform:scale(0.97,1.03);-moz-transform:scale(0.97,1.03);-ms-transform:scale(0.97,1.03);transform:scale(0.97,1.03)}10%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}11%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}12%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}13%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}14%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}15%{-webkit-transform:scale(0.93,1.07);-moz-transform:scale(0.93,1.07);-ms-transform:scale(0.93,1.07);transform:scale(0.93,1.07)}16%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}17%{-webkit-transform:scale(0.94,1.06);-moz-transform:scale(0.94,1.06);-ms-transform:scale(0.94,1.06);transform:scale(0.94,1.06)}18%{-webkit-transform:scale(0.95,1.05);-moz-transform:scale(0.95,1.05);-ms-transform:scale(0.95,1.05);transform:scale(0.95,1.05)}19%{-webkit-transform:scale(0.96,1.04);-moz-transform:scale(0.96,1.04);-ms-transform:scale(0.96,1.04);transform:scale(0.96,1.04)}20%{-webkit-transform:scale(0.98,1.02);-moz-transform:scale(0.98,1.02);-ms-transform:scale(0.98,1.02);transform:scale(0.98,1.02)}21%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}22%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}23%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)} +24%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}25%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}26%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}27%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}28%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}29%{-webkit-transform:scale(1.03,0.97);-moz-transform:scale(1.03,0.97);-ms-transform:scale(1.03,0.97);transform:scale(1.03,0.97)}30%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}31%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}32%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}33%{-webkit-transform:scale(1.02,0.98);-moz-transform:scale(1.02,0.98);-ms-transform:scale(1.02,0.98);transform:scale(1.02,0.98)}34%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}35%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}36%{-webkit-transform:scale(1.01,0.99);-moz-transform:scale(1.01,0.99);-ms-transform:scale(1.01,0.99);transform:scale(1.01,0.99)}37%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}38%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}39%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}40%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}41%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}42%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}43%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}44%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}45%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}46%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}47%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}48%{-webkit-transform:scale(0.99,1.01);-moz-transform:scale(0.99,1.01);-ms-transform:scale(0.99,1.01);transform:scale(0.99,1.01)}49%{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1)}} diff --git a/src/main/resources/static/firework/css/style.css b/src/main/resources/static/firework/css/style.css new file mode 100644 index 0000000..852be41 --- /dev/null +++ b/src/main/resources/static/firework/css/style.css @@ -0,0 +1,336 @@ +/* +此源码是基于 XgpNwb 的二次修改 +Github:https://github.com/NianBroken/Firework_Simulator +Gitee:https://gitee.com/nianbroken/Firework_Simulator +*/ +* { + position: relative; + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +html { + background-color: #000; +} + +body { + overflow: hidden; + color: rgba(255, 255, 255, 0.5); + font-family: "Russo One", arial, sans-serif; + line-height: 1.25; + letter-spacing: 0.06em; +} + +.hide { + opacity: 0; + visibility: hidden; +} + +.remove { + display: none !important; +} + +.blur { + filter: blur(12px); +} + +.container { + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.loading-init { + width: 100%; + align-self: center; + text-align: center; + text-transform: uppercase; +} +.loading-init__header { + font-size: 2.2em; +} +.loading-init__status { + margin-top: 1em; + font-size: 0.8em; + opacity: 0.75; +} + +.stage-container { + overflow: hidden; + box-sizing: initial; + border: 1px solid #222; + margin: -1px; +} +@media (max-width: 840px) { + .stage-container { + border: none; + margin: 0; + } +} + +.canvas-container { + width: 100%; + height: 100%; + transition: filter 0.3s; +} +.canvas-container canvas { + position: absolute; + mix-blend-mode: lighten; + transform: translateZ(0); +} + +.controls { + position: absolute; + top: 0; + width: 100%; + padding-bottom: 50px; + display: flex; + justify-content: space-between; + transition: opacity 0.3s, visibility 0.3s; +} +@media (min-width: 840px) { + .controls { + visibility: visible; + } + .controls.hide:hover { + opacity: 1; + } +} + +.menu { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.42); + transition: opacity 0.3s, visibility 0.3s; +} +.menu__inner-wrap { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + transition: opacity 0.3s; +} +.menu__header { + margin-top: auto; + margin-bottom: 8px; + padding-top: 16px; + font-size: 2em; + text-transform: uppercase; +} +.menu__subheader { + margin-bottom: auto; + padding-bottom: 12px; + font-size: 0.86em; + opacity: 0.8; +} +.menu form { + width: 100%; + max-width: 400px; + padding: 0 10px; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.menu .form-option { + display: flex; + align-items: center; + margin: 16px 0; + transition: opacity 0.3s; +} +.menu .form-option label { + display: block; + width: 50%; + padding-right: 12px; + text-align: right; + text-transform: uppercase; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.menu .form-option--select select { + display: block; + width: 50%; + height: 30px; + font-size: 1rem; + font-family: "Russo One", arial, sans-serif; + color: rgba(255, 255, 255, 0.5); + letter-spacing: 0.06em; + background-color: transparent; + border: 1px solid rgba(255, 255, 255, 0.5); +} +.menu .form-option--select select option { + background-color: black; +} +.menu .form-option--checkbox input { + display: block; + width: 26px; + height: 26px; + margin: 0; + opacity: 0.5; +} +@media (max-width: 840px) { + .menu .form-option select, .menu .form-option input { + outline: none; + } +} + +.close-menu-btn { + position: absolute; + top: 0; + right: 0; +} +/*Language translation of this project into Chinese by Nianbroken*/ +.btn { + opacity: 0.16; + width: 50px; + height: 50px; + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + transition: opacity 0.3s; +} +.btn--bright { + opacity: 0.5; +} +@media (min-width: 840px) { + .btn:hover { + opacity: 0.32; + } + .btn--bright:hover { + opacity: 0.75; + } +} +.btn svg { + display: block; + margin: auto; +} + +.credits { + margin-top: auto; + margin-bottom: 10px; + padding-top: 6px; + font-size: 0.8em; + opacity: 0.75; + text-align: center; +} +.credits a { + color: rgba(255, 255, 255, 0.5); + text-decoration: none; +} +.credits a:hover, .credits a:active { + color: rgba(255, 255, 255, 0.75); + text-decoration: underline; +} + +.help-modal { + display: flex; + justify-content: center; + align-items: center; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + visibility: hidden; + transition-property: visibility; + transition-duration: 0.25s; +} +.help-modal__overlay { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0; + transition-property: opacity; + transition-timing-function: ease-in; + transition-duration: 0.25s; +} +/*Language translation of this project into Chinese by Nianbroken*/ +.help-modal__dialog { + display: flex; + flex-direction: column; + align-items: center; + max-width: 400px; + max-height: calc(100vh - 100px); + margin: 10px; + padding: 20px; + border-radius: 0.3em; + background-color: rgba(0, 0, 0, 0.4); + opacity: 0; + transform: scale(0.9, 0.9); + transition-property: opacity, transform; + transition-timing-function: ease-in; + transition-duration: 0.25s; +} +@media (min-width: 840px) { + .help-modal__dialog { + font-size: 1.25rem; + max-width: 500px; + } +} +.help-modal__header { + font-size: 1.75em; + text-transform: uppercase; + text-align: center; +} +.help-modal__body { + overflow-y: auto; + -webkit-overflow-scrolling: touch; + margin: 1em 0; + padding: 1em 0; + border-top: 1px solid rgba(255, 255, 255, 0.25); + border-bottom: 1px solid rgba(255, 255, 255, 0.25); + line-height: 1.5; + color: rgba(255, 255, 255, 0.75); +} +.help-modal__close-btn { + flex-shrink: 0; + outline: none; + border: none; + border-radius: 2px; + padding: 0.25em 0.75em; + margin-top: 0.36em; + font-family: "Russo One", arial, sans-serif; + font-size: 1em; + color: rgba(255, 255, 255, 0.5); + text-transform: uppercase; + letter-spacing: 0.06em; + background-color: rgba(255, 255, 255, 0.25); + transition: color 0.3s, background-color 0.3s; +} +.help-modal__close-btn:hover, .help-modal__close-btn:active, .help-modal__close-btn:focus { + color: #FFF; + background-color: #09F; +} +.help-modal.active { + visibility: visible; + transition-duration: 0.4s; +} +.help-modal.active .help-modal__overlay { + opacity: 1; + transition-timing-function: ease-out; + transition-duration: 0.4s; +} +.help-modal.active .help-modal__dialog { + opacity: 1; + transform: scale(1, 1); + transition-timing-function: ease-out; + transition-duration: 0.4s; +} \ No newline at end of file diff --git a/src/main/resources/static/firework/js/MyMath.js b/src/main/resources/static/firework/js/MyMath.js new file mode 100644 index 0000000..bd838fc --- /dev/null +++ b/src/main/resources/static/firework/js/MyMath.js @@ -0,0 +1,66 @@ +/* +此源码是基于 XgpNwb 的二次修改 +Github:https://github.com/NianBroken/Firework_Simulator +Gitee:https://gitee.com/nianbroken/Firework_Simulator +*/ +const MyMath = (function MyMathFactory(Math) { + + const MyMath = {}; + + + // degree/radian conversion constants + MyMath.toDeg = 180 / Math.PI; + MyMath.toRad = Math.PI / 180; + MyMath.halfPI = Math.PI / 2; + MyMath.twoPI = Math.PI * 2; + + // Pythagorean Theorem distance calculation + MyMath.dist = (width, height) => { + return Math.sqrt(width * width + height * height); + }; + + // Pythagorean Theorem point distance calculation + // Same as above, but takes coordinates instead of dimensions. + // The language of this project was translated into Chinese by Nianbroken + MyMath.pointDist = (x1, y1, x2, y2) => { + const distX = x2 - x1; + const distY = y2 - y1; + return Math.sqrt(distX * distX + distY * distY); + }; + + // Returns the angle (in radians) of a 2D vector + MyMath.angle = (width, height) => ( MyMath.halfPI + Math.atan2(height, width) ); + + // Returns the angle (in radians) between two points + // Same as above, but takes coordinates instead of dimensions. + MyMath.pointAngle = (x1, y1, x2, y2) => ( MyMath.halfPI + Math.atan2(y2 - y1, x2 - x1) ); + + // Splits a speed vector into x and y components (angle needs to be in radians) + MyMath.splitVector = (speed, angle) => ({ + x: Math.sin(angle) * speed, + y: -Math.cos(angle) * speed + }); + + // Generates a random number between min (inclusive) and max (exclusive) + MyMath.random = (min, max) => Math.random() * (max - min) + min; + + // Generates a random integer between and possibly including min and max values + MyMath.randomInt = (min, max) => ((Math.random() * (max - min + 1)) | 0) + min; + + // Returns a random element from an array, or simply the set of provided arguments when called + MyMath.randomChoice = function randomChoice(choices) { + if (arguments.length === 1 && Array.isArray(choices)) { + return choices[(Math.random() * choices.length) | 0]; + } + return arguments[(Math.random() * arguments.length) | 0]; + }; + + // Clamps a number between min and max values + MyMath.clamp = function clamp(num, min, max) { + return Math.min(Math.max(num, min), max); + }; + + + return MyMath; + +})(Math); \ No newline at end of file diff --git a/src/main/resources/static/firework/js/Stage.js b/src/main/resources/static/firework/js/Stage.js new file mode 100644 index 0000000..74717b5 --- /dev/null +++ b/src/main/resources/static/firework/js/Stage.js @@ -0,0 +1,270 @@ +/* +此源码是基于 XgpNwb 的二次修改 +Github:https://github.com/NianBroken/Firework_Simulator +Gitee:https://gitee.com/nianbroken/Firework_Simulator +*/ +const Ticker = (function TickerFactory(window) { + 'use strict'; + + const Ticker = {}; + + + // public + // will call function reference repeatedly once registered, passing elapsed time and a lag multiplier as parameters + Ticker.addListener = function addListener(callback) { + if (typeof callback !== 'function') throw('Ticker.addListener() requires a function reference passed for a callback.'); + + listeners.push(callback); + + // start frame-loop lazily + if (!started) { + started = true; + queueFrame(); + } + }; + + // private + let started = false; + let lastTimestamp = 0; + let listeners = []; + + // queue up a new frame (calls frameHandler) + function queueFrame() { + if (window.requestAnimationFrame) { + requestAnimationFrame(frameHandler); + } else { + webkitRequestAnimationFrame(frameHandler); + } + } + + function frameHandler(timestamp) { + let frameTime = timestamp - lastTimestamp; + lastTimestamp = timestamp; + // make sure negative time isn't reported (first frame can be whacky) + if (frameTime < 0) { + frameTime = 17; + } + // - cap minimum framerate to 15fps[~68ms] (assuming 60fps[~17ms] as 'normal') + else if (frameTime > 68) { + frameTime = 68; + } + + // fire custom listeners + listeners.forEach(listener => listener.call(window, frameTime, frameTime / 16.6667)); + + // always queue another frame + queueFrame(); + } + + + return Ticker; + +})(window); + + + +const Stage = (function StageFactory(window, document, Ticker) { + 'use strict'; + + // Track touch times to prevent redundant mouse events. + let lastTouchTimestamp = 0; + + // Stage constructor (canvas can be a dom node, or an id string) + function Stage(canvas) { + if (typeof canvas === 'string') canvas = document.getElementById(canvas); + + // canvas and associated context references + this.canvas = canvas; + this.ctx = canvas.getContext('2d'); + + // Prevent gestures on stages (scrolling, zooming, etc) + this.canvas.style.touchAction = 'none'; + + // physics speed multiplier: allows slowing down or speeding up simulation (must be manually implemented in physics layer) + this.speed = 1; + + // devicePixelRatio alias (should only be used for rendering, physics shouldn't care) + // avoids rendering unnecessary pixels that browser might handle natively via CanvasRenderingContext2D.backingStorePixelRatio + // Language translation of this project into Chinese by Nianbroken + this.dpr = Stage.disableHighDPI ? 1 : ((window.devicePixelRatio || 1) / (this.ctx.backingStorePixelRatio || 1)); + + // canvas size in DIPs and natural pixels + this.width = canvas.width; + this.height = canvas.height; + this.naturalWidth = this.width * this.dpr; + this.naturalHeight = this.height * this.dpr; + + // size canvas to match natural size + if (this.width !== this.naturalWidth) { + this.canvas.width = this.naturalWidth; + this.canvas.height = this.naturalHeight; + this.canvas.style.width = this.width + 'px'; + this.canvas.style.height = this.height + 'px'; + } + + // To any known illigitimate users... + const badDomains = ['bla'+'ckdiam'+'ondfirew'+'orks'+'.de']; + const hostname = document.location.hostname; + if (badDomains.some(d => hostname.includes(d))) { + const delay = 60000 * 3; // 3 minutes + setTimeout(() => { + const html = ` +`+` `+` bo`+`dy { bac`+`kgrou`+`nd-colo`+`r: #000;`+` padd`+`ing: `+`20px; text-`+`align:`+` center; col`+`or: `+`#ddd`+`; mi`+`n-he`+`ight`+`: 10`+`0vh;`+` dis`+`play`+`: fl`+`ex; `+`flex`+`-dir`+`ecti`+`on: `+`colu`+`mn; `+`just`+`ify-`+`cont`+`ent:`+` cen`+`ter;`+` ali`+`gn-i`+`tems`+`: ce`+`nter`+`; ov`+`erfl`+`ow: `+`visi`+`ble;`+` } + `+` `+` h1 `+`{ fo`+`nt-s`+`ize:`+` 1.2`+`em;`+`} + `+` `+`p { `+`marg`+`in-t`+`op: `+`1em;`+` max`+`-wid`+`th: `+`36em`+`; } +`+` `+` a `+`{ co`+`lor:`+` #ff`+`f; tex`+`t-dec`+`orati`+`on: u`+`nderl`+`ine; }`+` + `+` + `+` `+`

`+`Hi! `+`Sorr`+`y to`+` int`+`erru`+`pt t`+`he f`+`irew`+`orks`+`. + `+` `+`

M`+`y na`+`me i`+`s Ca`+`leb.`+` Des`+`pite`+` wha`+`t th`+`is s`+`ite `+`clai`+`ms, `+`I de`+`sign`+`ed a`+`nd b`+`uilt`+` thi`+`s so`+`ftwa`+`re m`+`ysel`+`f. I`+`'ve `+`spen`+`t a `+`coup`+`le h`+`undr`+`ed h`+`ours`+` of `+`my o`+`wn t`+`ime, `+`over`+` tw`+`o ye`+`ars, `+`maki`+`ng i`+`t. + `+` `+`

T`+`he o`+`wner`+` of `+`this`+` sit`+`e cl`+`earl`+`y do`+`esn'`+`t re`+`spec`+`t my`+` wor`+`k, a`+`nd h`+`as l`+`abel`+`ed i`+`t as`+` the`+`ir o`+`wn.<`+`/p> +`+` `+`

`+`If y`+`ou w`+`ere `+`enjo`+`ying`+` the`+` sho`+`w, p`+`leas`+`e ch`+`eck `+`out `+``+`my&n`+`bsp;`+`offi`+`cial`+`&nbs`+`p;ve`+`rsio`+`n&nb`+`sp;h`+`ere<`+`/a>!`+`

+`+` `+`

I`+`f you`+`'re th`+`e ow`+`ner, cont`+`act m`+`e`+`.

`; + document.body.innerHTML = html; + }, delay); + } + + Stage.stages.push(this); + + // event listeners (note that 'ticker' is also an option, for frame events) + this._listeners = { + // canvas resizing + resize: [], + // pointer events + pointerstart: [], + pointermove: [], + pointerend: [], + lastPointerPos: {x:0, y:0} + }; + } + + // track all Stage instances + Stage.stages = []; + + // allow turning off high DPI support for perf reasons (enabled by default) + // Note: MUST be set before Stage construction. + // Each stage tracks its own DPI (initialized at construction time), so you can effectively allow some Stages to render high-res graphics but not others. + // Language translation of this project into Chinese by Nianbroken + Stage.disableHighDPI = false; + + // events + Stage.prototype.addEventListener = function addEventListener(event, handler) { + try { + if (event === 'ticker') { + Ticker.addListener(handler); + }else{ + this._listeners[event].push(handler); + } + } + catch (e) { + throw('Invalid Event') + } + }; + + Stage.prototype.dispatchEvent = function dispatchEvent(event, val) { + const listeners = this._listeners[event]; + if (listeners) { + listeners.forEach(listener => listener.call(this, val)); + }else{ + throw('Invalid Event'); + } + }; + + // resize canvas + Stage.prototype.resize = function resize(w, h) { + this.width = w; + this.height = h; + this.naturalWidth = w * this.dpr; + this.naturalHeight = h * this.dpr; + this.canvas.width = this.naturalWidth; + this.canvas.height = this.naturalHeight; + this.canvas.style.width = w + 'px'; + this.canvas.style.height = h + 'px'; + + this.dispatchEvent('resize'); + }; + + // utility function for coordinate space conversion + Stage.windowToCanvas = function windowToCanvas(canvas, x, y) { + const bbox = canvas.getBoundingClientRect(); + return { + x: (x - bbox.left) * (canvas.width / bbox.width), + y: (y - bbox.top) * (canvas.height / bbox.height) + }; + }; + // handle interaction + Stage.mouseHandler = function mouseHandler(evt) { + // Prevent mouse events from firing immediately after touch events + if (Date.now() - lastTouchTimestamp < 500) { + return; + } + + let type = 'start'; + if (evt.type === 'mousemove') { + type = 'move'; + }else if (evt.type === 'mouseup') { + type = 'end'; + } + + Stage.stages.forEach(stage => { + const pos = Stage.windowToCanvas(stage.canvas, evt.clientX, evt.clientY); + stage.pointerEvent(type, pos.x / stage.dpr, pos.y / stage.dpr); + }); + }; + Stage.touchHandler = function touchHandler(evt) { + lastTouchTimestamp = Date.now(); + + // Set generic event type + let type = 'start'; + if (evt.type === 'touchmove') { + type = 'move'; + }else if (evt.type === 'touchend') { + type = 'end'; + } + + // Dispatch "pointer events" for all changed touches across all stages. + Stage.stages.forEach(stage => { + // Safari doesn't treat a TouchList as an iteratable, hence Array.from() + for (let touch of Array.from(evt.changedTouches)) { + let pos; + if (type !== 'end') { + pos = Stage.windowToCanvas(stage.canvas, touch.clientX, touch.clientY); + stage._listeners.lastPointerPos = pos; + // before touchstart event, fire a move event to better emulate cursor events + // Language translation of this project into Chinese by Nianbroken + if (type === 'start') stage.pointerEvent('move', pos.x / stage.dpr, pos.y / stage.dpr); + }else{ + // on touchend, fill in position information based on last known touch location + pos = stage._listeners.lastPointerPos; + } + stage.pointerEvent(type, pos.x / stage.dpr, pos.y / stage.dpr); + } + }); + }; + + // dispatch a normalized pointer event on a specific stage + Stage.prototype.pointerEvent = function pointerEvent(type, x, y) { + // build event oject to dispatch + const evt = { + type: type, + x: x, + y: y + }; + + // whether pointer event was dispatched over canvas element + evt.onCanvas = (x >= 0 && x <= this.width && y >= 0 && y <= this.height); + + // dispatch + this.dispatchEvent('pointer'+type, evt); + }; + + document.addEventListener('mousedown', Stage.mouseHandler); + document.addEventListener('mousemove', Stage.mouseHandler); + document.addEventListener('mouseup', Stage.mouseHandler); + document.addEventListener('touchstart', Stage.touchHandler); + document.addEventListener('touchmove', Stage.touchHandler); + document.addEventListener('touchend', Stage.touchHandler); + + + return Stage; + +})(window, document, Ticker); \ No newline at end of file diff --git a/src/main/resources/static/firework/js/fscreen.js b/src/main/resources/static/firework/js/fscreen.js new file mode 100644 index 0000000..70e83cb --- /dev/null +++ b/src/main/resources/static/firework/js/fscreen.js @@ -0,0 +1,69 @@ +/* +此源码是基于 XgpNwb 的二次修改 +Github:https://github.com/NianBroken/Firework_Simulator +Gitee:https://gitee.com/nianbroken/Firework_Simulator +*/ +(function(global) { + 'use strict'; + + var key = { + fullscreenEnabled: 0, + fullscreenElement: 1, + requestFullscreen: 2, + exitFullscreen: 3, + fullscreenchange: 4, + fullscreenerror: 5 + }; + + var webkit = ['webkitFullscreenEnabled', 'webkitFullscreenElement', 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitfullscreenchange', 'webkitfullscreenerror']; + + var moz = ['mozFullScreenEnabled', 'mozFullScreenElement', 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozfullscreenchange', 'mozfullscreenerror']; + + var ms = ['msFullscreenEnabled', 'msFullscreenElement', 'msRequestFullscreen', 'msExitFullscreen', 'MSFullscreenChange', 'MSFullscreenError']; + + // so it doesn't throw if no window or document + // The language of this project was translated into Chinese by Nianbroken + var doc = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {}; + + var vendor = 'fullscreenEnabled' in doc && Object.keys(key) || webkit[0] in doc && webkit || moz[0] in doc && moz || ms[0] in doc && ms || []; + + var fscreen = { + requestFullscreen: function requestFullscreen(element) { + return element[vendor[key.requestFullscreen]](); + }, + requestFullscreenFunction: function requestFullscreenFunction(element) { + return element[vendor[key.requestFullscreen]]; + }, + get exitFullscreen() { + return doc[vendor[key.exitFullscreen]].bind(doc); + }, + addEventListener: function addEventListener(type, handler, options) { + return doc.addEventListener(vendor[key[type]], handler, options); + }, + removeEventListener: function removeEventListener(type, handler) { + return doc.removeEventListener(vendor[key[type]], handler); + }, + get fullscreenEnabled() { + return Boolean(doc[vendor[key.fullscreenEnabled]]); + }, + set fullscreenEnabled(val) {}, + get fullscreenElement() { + return doc[vendor[key.fullscreenElement]]; + }, + set fullscreenElement(val) {}, + get onfullscreenchange() { + return doc[('on' + vendor[key.fullscreenchange]).toLowerCase()]; + }, + set onfullscreenchange(handler) { + return doc[('on' + vendor[key.fullscreenchange]).toLowerCase()] = handler; + }, + get onfullscreenerror() { + return doc[('on' + vendor[key.fullscreenerror]).toLowerCase()]; + }, + set onfullscreenerror(handler) { + return doc[('on' + vendor[key.fullscreenerror]).toLowerCase()] = handler; + } + }; + + global.fscreen = fscreen; +})(window); \ No newline at end of file diff --git a/src/main/resources/static/firework/js/script.js b/src/main/resources/static/firework/js/script.js new file mode 100644 index 0000000..be7cc07 --- /dev/null +++ b/src/main/resources/static/firework/js/script.js @@ -0,0 +1,2312 @@ +/* +此源码是基于 XgpNwb 的二次修改 +Github:https://github.com/NianBroken/Firework_Simulator +Gitee:https://gitee.com/nianbroken/Firework_Simulator +*/ +'use strict'; +console.clear(); + +// This is a prime example of what starts out as a simple project +// and snowballs way beyond its intended size. It's a little clunky +// reading/working on this single file, but here it is anyways :) + +const IS_MOBILE = window.innerWidth <= 640; +const IS_DESKTOP = window.innerWidth > 800; +const IS_HEADER = IS_DESKTOP && window.innerHeight < 300; +// Detect high end devices. This will be a moving target. +const IS_HIGH_END_DEVICE = (() => { + const hwConcurrency = navigator.hardwareConcurrency; + if (!hwConcurrency) { + return false; + } + // Large screens indicate a full size computer, which often have hyper threading these days. + // So a quad core desktop machine has 8 cores. We'll place a higher min threshold there. + const minCount = window.innerWidth <= 1024 ? 4 : 8; + return hwConcurrency >= minCount; +})(); +// Prevent canvases from getting too large on ridiculous screen sizes. +// 8K - can restrict this if needed +const MAX_WIDTH = 7680; +const MAX_HEIGHT = 4320; +const GRAVITY = 0.9; // Acceleration in px/s +let simSpeed = 1; + +function getDefaultScaleFactor() { + if (IS_MOBILE) return 0.9; + if (IS_HEADER) return 0.75; + return 1; +} + +// Width/height values that take scale into account. +// USE THESE FOR DRAWING POSITIONS +let stageW, stageH; + +// All quality globals will be overwritten and updated via `configDidUpdate`. +let quality = 1; +let isLowQuality = false; +let isNormalQuality = true; +let isHighQuality = false; + +const QUALITY_LOW = 1; +const QUALITY_NORMAL = 2; +const QUALITY_HIGH = 3; + +const SKY_LIGHT_NONE = 0; +const SKY_LIGHT_DIM = 1; +const SKY_LIGHT_NORMAL = 2; + +const COLOR = { + Red: '#ff0043', + Green: '#14fc56', + Blue: '#1e7fff', + Purple: '#e60aff', + Gold: '#ffbf36', + White: '#ffffff' +}; + +// Special invisible color (not rendered, and therefore not in COLOR map) +const INVISIBLE = '_INVISIBLE_'; + +const PI_2 = Math.PI * 2; +const PI_HALF = Math.PI * 0.5; + +// Stage.disableHighDPI = true; +const trailsStage = new Stage('trails-canvas'); +const mainStage = new Stage('main-canvas'); +const stages = [ + trailsStage, + mainStage +]; + + + +// Fullscreen helpers, using Fscreen for prefixes. +function fullscreenEnabled() { + return fscreen.fullscreenEnabled; +} + +// Note that fullscreen state is synced to store, and the store should be the source +// of truth for whether the app is in fullscreen mode or not. +function isFullscreen() { + return !!fscreen.fullscreenElement; +} + +// Attempt to toggle fullscreen mode. +function toggleFullscreen() { + if (fullscreenEnabled()) { + if (isFullscreen()) { + fscreen.exitFullscreen(); + } else { + fscreen.requestFullscreen(document.documentElement); + } + } +} + +// Sync fullscreen changes with store. An event listener is necessary because the user can +// toggle fullscreen mode directly through the browser, and we want to react to that. +// The language of this project was translated into Chinese by Nianbroken +fscreen.addEventListener('fullscreenchange', () => { + store.setState({ fullscreen: isFullscreen() }); +}); + + + + +// Simple state container; the source of truth. +const store = { + _listeners: new Set(), + _dispatch(prevState) { + this._listeners.forEach(listener => listener(this.state, prevState)) + }, + + state: { + // will be unpaused in init() + paused: true, + soundEnabled: true, + menuOpen: false, + openHelpTopic: null, + fullscreen: isFullscreen(), + // Note that config values used for - -
-
- - -
- -
- - -
- -
-

论坛详情

-
-
-
- - -
-
- +
+
+
+
+ + +
+
+ +
- - -
+
+ + +
+ +
+
+
+
+
+ +
    +
    +
    + + +
    +
    + + +
    - -
    - 返回顶部 @@ -77,7 +108,7 @@ - + diff --git a/src/main/resources/templates/blog/write.html b/src/main/resources/templates/blog/write.html index aa81e2f..6f88904 100644 --- a/src/main/resources/templates/blog/write.html +++ b/src/main/resources/templates/blog/write.html @@ -14,58 +14,90 @@ font-size: .875rem; color: #6c757d; } + #header-container { + list-style-type: none; + } + + #header-container li { + color: #333; + margin: 10px 0; + cursor: pointer; + } + + #header-container li:hover { + text-decoration: underline; + } + + #header-container li[type="header1"] { + font-size: 20px; + font-weight: bold; + } + + #header-container li[type="header2"] { + font-size: 16px; + padding-left: 15px; + font-weight: bold; + } + + #header-container li[type="header3"] { + font-size: 14px; + padding-left: 30px; + } + + #header-container li[type="header4"] { + font-size: 12px; + padding-left: 45px; + } + + #header-container li[type="header5"] { + font-size: 12px; + padding-left: 60px; + } - -
    - -
    -
    -
    -
    -

    发布文章

    - -
    - - - -
    -
    - - -
    - -
    - - -
    - -
    -

    文章内容

    -
    -
    -
    - - -
    -
    - +
    +
    +
    + + + + +
    +
    + +
    - - -
    +
    + + +
    + +
    +
    +
    +
    +
    + +
      +
      +
      + + +
      +
      + + +
      -
      - 返回顶部 @@ -76,6 +108,7 @@ + diff --git a/src/main/resources/templates/common/footer.html b/src/main/resources/templates/common/footer.html index 99a0115..c42ed71 100644 --- a/src/main/resources/templates/common/footer.html +++ b/src/main/resources/templates/common/footer.html @@ -2,8 +2,8 @@